1.1.1.1. 格式2- 数字性循环
该格式的语法如下:
| for ((初始值;循环控制条件;变量变化))do程序done**** |
|---|
需要注意以下几点:
初始值:在循环开始时,需要给某个变量赋予初始值,如 i=1。
循环控制条件:用于指定变量循环的次数,如 i<=100,则只要 i 的值小于等于 100,循环就会继续。
变量变化: 每次循环之后,变量该如何变化,如 i=i+1,代表每次循环之后,变量的值都加 1。
语法二和其他语言中的 for 循环类似,也就是事先决定循环次数的固定循环。
实例:
1)输出文本数据
test22.sh
| #!/bin/bashfor (( i = 0 ; i <= 5 ; i++ )) do echo "welcome $i times"done |
|---|
2)求1-100的和
test23.sh
| #!/bin/bashs**=0#从1加到100for** (( i**=1 ; i <=100 ; i=i+1 ))#定义循环100次do #每次循环给变量s赋值 s=s** + **i** **))****done**#输出从1加到100的和**echo** "The sum of 1+2+..+100 is : s" |
|---|
1.1.1. while 循环
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:
| while 条件do 程序done |
|---|
1)案例1
以下是一个基本的while循环,测试条件是:如果int小于等于5,那么条件返回真。int从0开始,每次循环处理时,int加1。运行上述脚本,返回数字1到5,然后终止。
test24.sh
| #!/bin/bashnum**=1while** [ num let num++done |
|---|
运行脚本,输出:
| 12345 |
|---|
使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量,具体可查阅:Bash let 命令。
2)案例2****
求1-100的和
test25.sh
| #!/bin/bashi**=1sum=0while** [ sum |
|---|
1.1.2. 无限循环****
无限循环语法格式:
| while :do commanddone |
|---|
或者
| while truedo commanddone |
|---|
或者
| for (( ; ; )) |
|---|
1.1.3. case 语句****
Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:
| case 值 in模式1) command1 command2 ... commandN ;;模式2) command1 command2 ... commandN ;;esac |
|---|
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
下面的脚本提示输入1到4,与每一种模式进行匹配:
test26.sh
| #!/bin/bashecho '输入 1 到 4 之间的数字:' echo '你输入的数字为:'read aNumcase $aNum in 1 ) echo '你选择了 1' ;; 2 ) echo '你选择了 2' ;; 3 ) echo '你选择了 3' ;; 4 ) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' **;;**esac |
|---|
输入不同的内容,会有不同的结果
1.1.4. 跳出循环****
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。
1.1.4.1. break****
break命令允许跳出所有循环(终止执行后面的所有循环)。
下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。
test27.sh
| #!/bin/bash while **:**do echo -n "输入 1 到 5 之间的数字:" read **** aNum case **aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束" break ;; esacdone | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
执行以上代码,输出结果为:
| 输入 1 到 5 之间的数字:3你输入的数字为 3!输入 1 到 5 之间的数字:7你输入的数字不是 1 到 5 之间的! 游戏结束 |
|---|