> 文档中心 > 【shell篇】流程控制。if判断,case语句,for循环,while循环,until 循环,无限循环,跳出循环,break,continue,

【shell篇】流程控制。if判断,case语句,for循环,while循环,until 循环,无限循环,跳出循环,break,continue,

文章目录

  • 流程控制
  • 1. if判断
    • 1.1 基本语法
      • if else
      • if else-if else
    • 1.2 实操案例
    • 1.3 扩展
  • 2. case语句
    • 2.1 基本语法
    • 2.2 实操案例
  • 3. for循环
    • 3.1 语法格式1
    • 3.2 语法格式2
    • 3.3 实操案例1
    • 3.4实操案例2
  • 4. while循环
    • 4.1 基本语法
    • 4.2 实操案例
  • 5. until 循环
    • 5.1 基本语法
    • 5.2 实操案例
  • 6. 无限循环
    • 6.1 基本语法
    • 6.1 实操案例
  • 7. 跳出循环
    • 7.1 break命令
    • 7.2 continue命令

流程控制

1. if判断

1.1 基本语法

if else

if [ 条件判断式 ];then程序fi

或者

if [ 条件判断式 ]then程序fi

if else-if else

if [ 条件判断式 ];then程序elif [ 条件判断式 ];then程序else程序fi

注意事项:

(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格。

(2)if或elif后要有空格

1.2 实操案例

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

输出结果:

a 小于 b

1.3 扩展

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

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

输出结果:

两个数字相等!

2. case语句

2.1 基本语法

case $变量名 in"值1")如果变量的值等于1,则执行;;"值2")如果变量的值等于2,则执行;;*)如果变量的值都无法匹配,则执行;;esac

注意事项:

(1)case行尾必须为单词“in”

(2)每一个模式匹配必须以英文右括号 ) 结束。

(3)双分号" ;; "表示命令序列结束,相当于java中的break。

(4)最后的"*)"表示默认模式,相当于java中的default。

2.2 实操案例

输入一个数字,如果是1,则输出banzhang,如果是2,则输出cls,如果是其它,输出renyao。

[root@jiangnan data]# vi if3.sh[root@jiangnan data]# cat if3.sh #!/bin/bashcase $1 in"1")echo "banzhang";;"2")echo "cls";;*)echo "renyao";;esac[root@jiangnan data]# sh if3.sh 1banzhang[root@jiangnan data]# 

类比java中的switch…case语法

3. for循环

3.1 语法格式1

for var in item1 item2 ... itemNdo   程序done

3.2 语法格式2

for ((初始值;循环控制条件;变量变化)) do    程序done

3.3 实操案例1

for var in 1 2 3 4 5do    echo "The value is: $var"done

输出结果:

The value is: 1The value is: 2The value is: 3The value is: 4The value is: 5

3.4实操案例2

从1加到100

[root@jiangnan data]# vi for1.sh[root@jiangnan data]# cat for1.sh #!/bin/bashs=0for ((i=0;i<=100;i++))dos=$[$s+$i]doneecho $s[root@jiangnan data]# sh for1.sh 5050[root@jiangnan data]# 

注意:我们在之前的文章中说过了在使用for循环时带参数的情况,注意$@和$*的区别,可以看我之前的文章https://blog.csdn.net/weixin_45842494/article/details/123490655

4. while循环

4.1 基本语法

while [ 条件判断式 ]do程序done

4.2 实操案例

从1加到100

[root@jiangnan data]# vi while.sh[root@jiangnan data]# cat while.sh #!/bin/bashs=0i=1while [ $i -le 100 ]dos=$[$s+$i]i=$[$i+1]doneecho $s[root@jiangnan data]# sh while.sh 5050[root@jiangnan data]# 

5. until 循环

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

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

5.1 基本语法

until [ 条件判断式 ]do程序done

5.2 实操案例

从1到100求和

[root@jiangnan data]# vi until.sh [root@jiangnan data]# cat until.sh #!/bin/basha=0s=0until [ ! $a -le 100 ]dos=$[$s+$a]a=$[$a+1]doneecho $s[root@jiangnan data]# sh until.sh 5050[root@jiangnan data]# 

6. 无限循环

6.1 基本语法

while :do程序done

或者

while truedo程序done

或者

for (( ; ; ))do程序done

6.1 实操案例

[root@jiangnan data]# vi for2.sh [root@jiangnan data]# cat for2.sh #!/bin/bashfor (( ; ; ))do echo "I love China"done[root@jiangnan data]# sh for2.shI love ChinaI love ChinaI love China......

7. 跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。

7.1 break命令

break命令允许跳出所有循环(终止执行后面的所有循环)。

下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。

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

执行以上代码,输出结果为:

输入 15 之间的数字:3你输入的数字为 3!输入 15 之间的数字:7你输入的数字不是 15 之间的! 游戏结束

7.2 continue命令

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

对上面的例子进行修改:

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

运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo “游戏结束” 永远不会被执行。

类比java中的break和continue

微信公众号先已开通,搜索 “江小南和他的小伙伴们” 就能找到我哦,各位小伙伴们可以关注一下,文章会进行同步更新,方便查看哦。