• shell编程 之 流程控制(条件语句和循环语句)


    1 if ...else...

        基本格式:

            if condition

            then

                commend

            else

                commend

            fi

        当然也可以写到一行,用[ ]表明边界,用;表示分行。比如: if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi    判断条件用方括号括起来表示分界,意思是统计当下进程中

    带’ssh‘的字符串数量,如果这个数量大于1,那就输出true,结束。

        还有带elif的格式,如下:

            if condition

            then

                commend

            elif condition1

            then

                 commend1

            else

                commend2

            fi

        实例:

    a=10
    b=20
    if [ $a == $b ]    #此处方括号和内部的内容之间必须有空格
    then
       echo "a 等于 b"
    elif [ $a -gt $b ]    #这种写法也可以改写成test $a -gt $b
    then
       echo "a 大于 b"
    elif [ $a -lt $b ]
    then
       echo "a 小于 b"
    else
       echo "没有符合的条件"
    fi
    #注意,c=[ $a -lt $b ];echo $c 得不到任何输出值,它不和python一样,true和false不能被打印出来,实在是想试试的话,可以用[ $a -lt $b ] && echo hehe(||)也行(得到hehe就表示前面是ture)
    
    a=1
    b=2
    [ $a -lt $b ] && echo hehe1    #且,第一个为true的话,第二个仍需判断,这样才能知道总体是true还是false
    [ $a -gt $b ] || echo hehe2    #或,第一个是true的话,第二个不用执行就能得到总体的返回值是true

    2 for循环

        基本格式:for i in item1 item2

                          do 

                                commend

                          done

        写成一行的时候仍然是分号隔开:for i in item1 item2; do commend; done 

        实例:

         

    for loop in 1 2 3 4 5
    do
        echo "The value is: $loop"
    done    #结果是
    #The value is:1
    #The value is:2 ...一直到5
    

        有一点得注意,for i in " a string",输出的i将会是:a string,这里和python不一样,这里不会把字母一个一个拆开迭代。

    3 while循环

        只要符合条件就一直执行。一般格式为:

            while condition    #condition 不写,或者写true,就可以导致无限循环。

            do

                commend

            done  

        实例;    #得到的输出是1,2,3,4,5,let用于计算多个表达式,不需要加上变量指示符号$,自加操作:let no++  ,自减操作:let no-- 。简写形式 let no+=10,let no-=20,分别等同于 let no=no+10,let no=no-20

    int=1
    while(( $int<=5 ))    #写成:[ $int -le 5 ]也行
    do
        echo $int
        let "int++"
    done
    

    4 until循环

        一直循环到有一个ture为止。和wihile正好相反

            untill condition

            do

                commend

            done

        实例:     

    a=0
    
    until [ ! $a -lt 10 ]    #除非a大于等于10否则一直运行
    do
       echo $a
       a=`expr $a + 1`
    done
    

    5 多选择语句

        就是在多个语句中选一个,注意引号,换行。

        实例:

    aNum=3
    case $aNum in    #变量aNum可以是数字或者字符串abc等
        1) echo '你选择了 1'
        ;;    #俩分号
        2)  echo '你选择了 2'
        ;;
        3)  echo '你选择了 3'
        ;;
        4)  echo '你选择了 4'
        ;;
        *)  echo '你没有输入 1 到 4 之间的数字'
        ;;
    esac    #esca是反过来的
    

    6 跳出循环

        break命令跳出所有循环。

       实例:

    while :
    do
        echo -n "输入 1 到 5 之间的数字:"
        read aNum
        case $aNum in
            1|2|3|4|5) echo "你输入的数字为 $aNum!"
            ;;
            *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"    #*表示除了12345以外的其他情况
                break    #直接跳出并且终止这个程序
            ;;
        esac
    done
    

     continue 跳出这一层循环

        实例:

    while :
    do
        echo -n "输入 1 到 5 之间的数字: "
        read aNum
        case $aNum in
            1|2|3|4|5) echo "你输入的数字为 $aNum!"
            ;;
            *) echo "你输入的数字不是 1 到 5 之间的!"
                continue        #如果输入的值不是1-5之间的数,contiuune会直接调到” echo -n “输入1到5之间的数字”
                echo "游戏结束"
            ;;
        esac
    done
    

      

  • 相关阅读:
    疑难杂症--数据库触发器导致批处理中变量无效
    Transaction And Lock--锁相关基础
    INDEX--关于索引的琐碎
    INDEX--索引相关信息查看
    INDEX--索引页上存放那些数据
    Transaction And Lock--解决死锁/锁的几种有效方式
    Transaction And Lock--由Lookup导致的死锁情况
    Transaction And Lock--由外键导致的死锁
    oozie中时间EL表达式
    SpringBoot-hello world
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/9261361.html
Copyright © 2020-2023  润新知