zoukankan      html  css  js  c++  java
  • 编程的基本元素

    1、for while until三种循环的使用方法

    语法:for var; do 
    .... 
    done
    例如:for ((i=1;i<=10;i++)) 
    do 
    echo "num is $i" 
    done

    语法:while :; do 
    echo looping... 
    done
    若为 ture ,则执行 do 与 done 之间的命令,然后重新判断 while 后的 return value 。 
    * 若为 false ,则不再执行 do 与 done 之间的命令而结束循环

    与 while 相反,until 是在 return value 为 false 时进入循环,否则结束。
    * break 
    * continue 
    break 是用来打断循环,也就是"强迫结束" 循环

    continue 后面也可指定一个数值 n ,以决定继续哪一层(从里向外计算)的循环,默认值为 continue 1 ,也就是继续当前的循环。

    2、条件控制与流程控制

    test命令用法。功能:检查文件和比较值

    1)判断表达式 
    if test  (表达式为真)
    if test !表达式为假
    test 表达式1 –a 表达式2                  两个表达式都为真
    test 表达式1 –o 表达式2                 两个表达式有一个为真

    2)判断字符串
    test –n 字符串                                   字符串的长度非零
    test –z 字符串                                    字符串的长度为零
    test 字符串1=字符串2                    字符串相等
    test 字符串1!=字符串2               字符串不等

    3)判断整数
    test 整数1 –eq 整数2                        整数相等
    test 整数1 –ge 整数2                        整数1大于等于整数2
    test 整数1 –gt 整数2                         整数1大于整数2
    test 整数1 –le 整数2                         整数1小于等于整数2
    test 整数1 –lt 整数2                          整数1小于整数2
    test 整数1 –ne 整数2                        整数1不等于整数2

    4)判断文件
    test  File1 –ef  File2                            两个文件具有同样的设备号和i结点号
    test  File1 –nt  File2                            文件1比文件2 新
    test  File1 –ot  File2                            文件1比文件2 旧
    test –b File                                           文件存在并且是块设备文件
    test –c File                                           文件存在并且是字符设备文件
    test –d File                                           文件存在并且是目录
    test –e File                                           文件存在
    test –f File                                            文件存在并且是正规文件
    test –g File                                           文件存在并且是设置了组ID
    test –G File                                           文件存在并且属于有效组ID
    test –h File                                           文件存在并且是一个符号链接(同-L)
    test –k File                                           文件存在并且设置了sticky位
    test –b File                                           文件存在并且是块设备文件
    test –L File                                           文件存在并且是一个符号链接(同-h)
    test –o File                                           文件存在并且属于有效用户ID
    test –p File                                           文件存在并且是一个命名管道
    test –r File                                            文件存在并且可读
    test –s File                                           文件存在并且是一个套接字
    test –t FD                                             文件描述符是在一个终端打开的
    test –u File                                           文件存在并且设置了它的set-user-id位
    test –w File                                          文件存在并且可写
    test –x File                                           文件存在并且可执行

    if语法:if-then-else

    if [] ;then

    done..................

    fi

    例子:

    if [-d /root/tmp]; then

    echo '/root/tmp目录存在'

    else

    echo '/root/tmp目录不存在'

    fi

    if test "str" > "xyz"

    echo "字符串str比较大"

    else

    echo "字符串str比较小"

    fi

    命令1 && 命令2

    &&称为逻辑的AND,其运作的方式:如果“命令1”执行结果为真,才会执行“命令2”.

    例如:

    [ -z "$PS1" ] && return

    先判断$PS1变量值是否为空,如果为空,就执行return命令,由子shell环境返回到父shell,这等于是结束执行该script.

    命令1 || 命令2

    运作方式为:如果“命令1”执行为假,才会执行“命令2”

    case的语法格式如下:
           case var in
                exp-1) 命令体1 ;;
                exp-2) 命令体2 ;;
                      ...
                *)    命令体 ;;
    例子:

    case $param in
    $((a+b))) echo "NO1"
                    param="dog"   ;;
    hello)      echo "NO2"
                   param="cat";;
    10)          echo "NO3"
                   param="pig";;
    *)            echo "ERROR"
    esac

    select语句结构:
    select 变量 in 选项1 选项2 ;do
    break
    done

    例如:for循环里嵌套一个 select语句
    #!/bin/sh
    for((i=1;i < 3;i=$[$i+1])); do  
    echo "What is your favourite OS?"
    select var in "Linux" "Cnu Hurd" "Free BSD" "Other";do
    break
    done
    echo "You have selected $var"
    done

    3、数组和expr

    shell 数组

    BASH只支持一维数组,但参数个数没有限制。

    声明一个数组:
    declare -a array,或者直接赋值

    数组赋值:
    (1) array=(var1 var2 var3 ... varN)
    (2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)
    (3) array[0]=var1
        arrya[1]=var2
        ...
        array[n]=varN

    计算数组元素个数:
    ${#array[@]}  或者  ${#array[*]}

    引用数组:
    echo ${array[n]}
     
    遍历数组:
    filename=(`ls`)
    for var in ${filename[@]};do
    echo $var
    done

    expr操作

    expr命令一般用于整数值,但也可用于字符串。一般格式为:
    expr argument operator argument
    例子:增量计数
    expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意
    即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。
    $LOOP=0
    $LOOP=`expr $LOOP + 1`
    使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
    $expr 30 * 3
    90

  • 相关阅读:
    Penetration Test
    SpringBoot启动时初始化数据库及spring.jpa.generate-dll与spring.jpa.hibernate.ddl-auto之间的困惑
    maven deploy到ftp服务器
    spring-boot:repackage生成的MANIFEST.MF中的Main-Class和Start-Class
    @GeneratedValue的strategy
    mysql方言设置
    jpa.generate-ddl和jpa.hibernate.ddl-auto
    在家学习VS在咖啡馆学习
    StatusLogger No Log4j 2 configuration file found
    tomcat应用部署顺序
  • 原文地址:https://www.cnblogs.com/276815076/p/2490414.html
Copyright © 2011-2022 走看看