十四. [博学谷学习记录]|超强总结,用心分享|大数据 Linux(十四)

69 阅读2分钟
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** [   numle5 ]do    echo num** **-le** 5 ]**do**    **echo**  **num    let num++done

 

运行脚本,输出:

12345

 

使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量,具体可查阅:Bash let 命令

2)案例2****

求1-100的和

test25.sh

#!/bin/bashi**=1sum=0while**  [   i le100 ]do  let sum+=i  let i++doneecho i** **-**le 100  **]****do**  **let** sum+**=** **i**  **let** i++**done****echo**  **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 in        12345) echo "你输入的数字为aNum** **in**        1 **|** 2 **|** 3 **|** 4 **|** 5 **)**  **echo** "你输入的数字为 aNum!"         ;;         *)  echo "你输入的数字不是 1 到 5 之间的! 游戏结束"            break         ;;    esacdone | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

 

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

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