shell学习笔记之六——流程控制



  • 流程控制

    if-else

    if condition
    then
        command1 
        command2
        ...
        commandN 
    else
        command    
    fi
    
    #可以写成一行
    if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
    #适用于终端cmd
    

    if-elseif-else

    if condition1
    then
        command1
    elif condition2 
    then 
        command2
    else
        commandN
    fi
    
    #elif可以多次使用
    #elif
    #then
    #elif
    #then
    #..
    

    以上的conditihon可以使用

    if [ $a -gt $b ]或者if test $[n1] -gt $[n2](其中n1=$[2*3];n2=$[1+5];这是计算的方法)

    for循环

    for var in item1 item2 ... itemN   #可以使用两个括号: for((assign;condition;net))与C中类似,另外
    do                                 #使用两个圆括号的时候内部变量不需要加$,下面的while同理
        command1                       #循环体内要使用变量的话还是要$
        command2
        ...
        commandN
    done
    #写成一行
    for var in item1 item2 ... itemN; do command1; command2… done;
    #同样,适用于终端cmd
    
    #in列表可选,可以文件名或者字符串
    #也可以使用命令
    for file in $(ls /etc | grep -c "ssh")
    do
         cmd1
         cmd2
    done
    

    while循环

    while condition
    do
        command
    done
    
    #比如如下
    int=1
    while(( int<=5 ))  #这里也可以使用[ $int -le 5 ],这是上面for所说的两个圆括号,内部变量可以加$也可以不加
    do                                     #并且圆括号内的空格比较随意可加可不加
        echo $int
        let "int++"
    done
    #let命令是linux中的,用于变量计算,变量计算中不用加$
    #比如let n++
    #let n--
    #let n+=20等
    
    #或者可以和其他的命令联合
    echo '按下 <CTRL-D> 退出'
    echo -n '输入你最喜欢的网站名: '
    while read FILM
    do
        echo "是的!$FILM 是一个好网站"
    done
    

    until循环

    until condition
    do
        command
    done
    

    case循环

    case 值 in
    模式1)
        command1
        command2
        ...
        commandN
        ;;
    模式2)
        command1
        command2
        ...
        commandN
        ;;
    esac
    
    #比如
    echo '输入 1 到 4 之间的数字:'
    echo '你输入的数字为:'
    read aNum
    case $aNum in
        1)  echo '你选择了 1'
        ;;
        2)  echo '你选择了 2'
        ;;
        3)  echo '你选择了 3'
        ;;
        4)  echo '你选择了 4'                  #还可以使用| : 1|2|3|4)
        ;;
        *)  echo '你没有输入 1 到 4 之间的数字'
        ;;
    esac
    

    break、continue

    这两个运算符与C相同意义


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

Looks like your connection to Dian was lost, please wait while we try to reconnect.