当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    浅谈shell的一些循环格式

    栏目:win服务器问题汇总 时间:2019-11-20 22:24

    1.while 的格式

    x=1
    while ((x<=10)) ;do
     if [ $x == "2" -o $x == "4" ];then
      #条件x=2或者x=4执行下面语句
      x=$[$x+1]
      continue
       #跳过本次循环
     fi
    echo "$x"
     if [ $x == "8" ];then
      break
       #终止循环
     fi
    x=$[$x+1]
    done
    #最后输出结果为135678
    

    2.for 循环

    for i in `seq 10` ;do
    echo "$i"
    done
    #输出为1-10个数,for 循环不是靠判断来循环的是靠列表循环的,seq 10 这个函数能列出1-10的数值,这些数值就是for循环的列表
    for i in `ls` ;do
    echo "$i"
    done
    #这个程序最后输出为该文件夹的所有目录及文件夹

    3数组

    sz=(00 11 22 33 44 55)
    echo "${sz[*]}"
    #输出所有数值,"@"和"*"效果一样
    echo "${#sz[*]}"
    #输出数值个数
    echo "${sz[1]}"
    #显示指标1的数值,注意默认指标从0开始计算
    x=10
    sz[$10]=233
    echo "${sz[$10]}"
    #变量的使用,显示第10指标个数值
    
    declare -A sz
    #定义关联数组,使用非数字格式的必须预先定义下
    sz[yi]="111"
    sz[er]="222"
    echo "${sz[*]}"
    echo "${sz[er]}"
    显示结果 111 222
            222

    4.函数调用

     hansu(){
      #定义函数
    echo "第$1次,函数显示"
    }
    hansu 1
    #调用函数并传递参数,函数内部用$1 $2使用变量,和shell用法一样
    hansu 2
    hansu 3
    最后显示效果;
    第1次,函数显示
    第2次,函数显示
    第3次,函数显示
    

    5.if的使用

    if [ "a" == "a" ];then
     echo "条件满足"
    else
     echo "条件不满足"
    fi
    #正常使用,满足条件执行第一个语句
    if [ !"a" == "a" ];then
     echo "条件满足"
    else
     echo "条件不满足"
    fi
    #加个"!"号,取反值,满足条件,就变成了不满足了

    检测文件

    if [ -e /root/123.txt ];then
     echo "文件存在"
    else
     echo "文件不存在"
    fi
    -e 判断对象是否存在
    -d 判断对象是否存在,并且为目录
    -f 判断对象是否存在,并且为常规文件
    -L 判断对象是否存在,并且为符号链接
    -h 判断对象是否存在,并且为软链接
    -s 判断对象是否存在,并且长度不为0
    -r 判断对象是否存在,并且可读
    -w 判断对象是否存在,并且可写
    -x 判断对象是否存在,并且可执行
    -O 判断对象是否存在,并且属于当前用户
    -G 判断对象是否存在,并且属于当前用户组
    -nt 判断file1是否比file2新 [ "/data/file1" -nt "/data/file2" ]
    -ot 判断file1是否比file2旧 [ "/data/file1" -ot "/data/file2" ]

    字符运算

    =:   检测两个字符是否相等,相等返回真
    !=  检测两个字符是否不等,不等返回真
    -z   检测字符串长度是否为0,为0返回真,全是空格返回真 
    $    检测字符是否为空,有值时时候返回真,全是空格返回假

    数值比较

    x=10
    y=5
    if [ $x -gt $y ];then
    #注意表达式还能这样写  if (( $x > $y ));then  效果也是一样的而且更方便于记忆
     echo "真"
    else
     echo "假"
    fi
    #结果返回真
    
    -gt是左边大于右边,返回真 同 >
    -lt是小于  同 <
    -eq是等于 同 = 
    -ne是不等于 同!=
    -ge是大于等于 同>=
    -le是小于等于  同<=

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。