Shell流程控制

来源:互联网 发布:淘宝的中国质造 编辑:程序博客网 时间:2024/06/05 19:35


While循环简单案例:

 while语句结构

    while 条件语句    do    action    done;    实例1:    #!/bin/sh    i=10;    while [[ $i -gt 5 ]];do        echo $i;        ((i--));    done;    运行结果:========================    sh while1.sh    10    9    8    7    6

实例2:(循环读取文件内容:)

#!/bin/shwhile read line;doecho $line;done < /etc/Monkey.sh;运行结果:===================sh while2.sh# Do not remove the following line, or various programs# that require network functionality will fail.<precode_snippet_id="2005939"#!/bin/shint=1while(( $int<=5 ))do        echo $int        let "int++"done


实例3:while循环可用于读取键盘信息。

echo '按下 <CTRL-D> 退出'echo -n '输入你最喜欢的电影名: 'while read FILMdo    echo "是的!$FILM 是一部好电影"done


if命令

if 语句语法格式:if conditionthen    command1    command2    ...    commandNfi写成一行(适用于终端命令提示符):if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo"true"; fi


if else if else-if else结合使用

a=10b=20if [ $a == $b ]then   echo "a 等于 b"elif [ $a -gt $b ]then   echo "a 大于 b"elif [ $a -lt $b ]then   echo "a 小于 b"else   echo "没有符合的条件"fi


if else语句经常与test命令结合使用,如下所示:

num1=$[2*3]num2=$[1+5]if test $[num1] -eq $[num2]then    echo '两个数字相等!'else    echo '两个数字不相等!'fi 输出结果:两个数字相等!

for 循环

数组遍历

for i in *do       echo $idone!: <<!以下是for脚本所在目录,for循环列表的结果:DiTingLinux_rmdjtshellvariate.sh打怪升级模块!

另一种遍历方式

ls > ls.txtfor i in $(cat ls.txt)do       echo $idone!

函数传递

#注意 $@ 加上引号和不加是有区别的

nubset(){       for str in "$@"       do              echo $str       done}nubset 1 2 3 4nubset 1,2,3,4nubset "this is nub"nubset "this2,is2,nub2"nubset we will be fine


自然数的遍历使用 {}

for i in {1..5}do       echo "go $i home"done for i in {0..10..2}do    echo "go $i home"done 经典循环for (( i = 0; i < 10; i++ ))do       echo $idone

以上代码均经过测试,可用,点击进入原创地址

 

复合型实例

nub=(137 237 337 437 537  637)employee=(小明 小张 小红 小王 小竹 小胡)setnub=6: <<!array_set(){       for (( i = 0; i < $setnub; i++)); do                           if [[ $@ -eq $nub[i] ]];then                    echo ${nub[$i]}${employee[$i]}              fi       done      }array_set 437!for (( i = 0; i <$setnub; i++ )); do       echo ${nub[$i]}${employee[$i]}done


--------------------------------------无限循环命令------------------

 

:<<!while :docommanddone#或者while truedocommanddone#或者for (( ; ; ))!

until命令

until循环执行一系列命令直至条件为真时停止。

until循环与while循环在处理方式上刚好相反。

一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。

until 语法格式:

until conditiondo    commanddone

Case

#--下面的脚本提示输入1到4,与每一种模式进行匹配: ---

: <<!echo '输入 1 到 4 之间的数字:'echo '你输入的数字为:'read aNumcase $aNum in    1)  echo '你选择了 1'    ;;    2)  echo '你选择了 2'    ;;    3)  echo '你选择了 3'    ;;    4)  echo '你选择了 4'    ;;    *)  echo '你没有输入 1 到 4 之间的数字'    ;;esac!

 #---跳出循环------------break跳出后续循环---------------------------------

: <<!while :do    echo -n "输入 1 到 5 之间的数字:"    read aNum    case $aNum in        1|2|3|4|5) echo "你输入的数字为 $aNum!"        ;;        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"            break        ;;    esacdone!#执行以上代码,输出结果为:: <<!输入 1 到 5 之间的数字:3你输入的数字为 3!输入 1 到 5 之间的数字:7你输入的数字不是 1 到 5 之间的! 游戏结束!

#---跳出循环------------continue---------------------------------

 

: <<!while :do    echo -n "输入 1 到 5 之间的数字: "    read aNum    case $aNum in        1|2|3|4|5) echo "你输入的数字为 $aNum!"        ;;        *) echo "你输入的数字不是 1 到 5 之间的!"            continue             echo "游戏结束"        ;;    esacdone!

0 0
原创粉丝点击