循环结构Linux,Linux shell 编程(八):循环结构

循环语句

在shell中的循环语句如下:

for

while

unitl

case

select

for/while/unitl 必须以done结尾

for循环

for循环用来遍历数组(数据列表)或执行计算语句。

在shell中 for循环有两种形式

79e06b59a243335bde5cd32440f6c552.png

7b78046989cbc459ec31ca86ffa7be14.png

第一种用来遍历word序列的数据 word可以是以空格分隔的单词,数组变量或是数字区间/字母区间。

示例:

3af9b4a1567d3f1b7e980fa148f93076.png

循环次数为数据序列的个数,每一次循环时会把变量i赋值为本次循环到的数据,可以用在循环体中访问变量i。

第二种,示例:

12c0e192253be4b051ce16dce5d1d46f.png

在上面的循环中,expr1为i=0;expr2为i<10;expr3为i++,其中expr1在循环开始之前执行,expr2定义了运行循环的条件,expr3在循环中执行。

while循环

while 循环会在指定条件为真时循环执行代码块。

语法:

0f0348b3c67950fd4714ff5b3ab1da0e.png

``list-1可以是命令,表达式,如果命令或表达式一直为真则继续执行list-2``` 直到不为真停止循环。

示例:

c562d9da8a82bb7b3a4d1903ab218c40.png

如果命令ls执行成功,则会一直执行命令echo,和ls,直到命令执行失败。

示例2,使用表达式:

ce66ec63a182def15eec1b81eda83018.png

在上面的例子中,首先定义了一个变量i赋值为0,然后用表达式判断i的值是否小于10,如果小于10则执行while循环体中的命令,let i++每执行一次i加1,当i=10时i不小于10,循环结束。

until循环

until循环是 while 循环的变体。该循环会在检查条件是否为真,如果条件为真的话,就会退出这个循环。

语法:

8586ce935143f18b6945ec5b8330b1a3.png

示例:

a906cfb6959b1590ced77777cf1bed11.png

当命令ls执行成功时循环结束,until循环会先判断ls是否执行成功,如果成功则不继续循环,否则继续循环,直到命令执行成功。

与while循环一样,until也可以判断表达式,如果表达式执行成功则跳出循环。

446fad8dfb31d1a6faa5fa0f95b3bf5a.png

case语句

case语句是一个模式匹配语句,基于不同的条件来执行不同的动作,语法如下:

aaf7f1806555a0d99ffd0843f82ccefc.png

它会用word尝试与pattern匹配,如果匹配则运行该模式下的命令.

示例:

ad6c50d51dcd3a4d0b634441adb9ea85.png

在上面的示例中,将cash.sh传入的第一个参数做匹配,每个模式下的命令必须以;;结束,而case语句必须以esac结束。*为默认匹配,如果前面的模式都不能匹配,则运行该模式下的命令,如果一个模式下不想执行命令可以输入两个分号;;结束。

select语句

select 语句可以打印一个选项列表,用于与用户交互。

语法:

6b08c97dde9713a141cd43824c959d93.png

select将定义一个变量name,然后从word中将用户选择的编号对应的word数据序列中对应的索引的值赋值给name。

在下面的列子中,我将selelct和case语句结合起来使用。

9950caebc6de8cbec0700232a4fff0e8.png

当执行test.sh脚本时,···select将序列数据打印处理供用户选择,而select只接受数字序列,然后case语句将用户选择的数据做匹配,做出相应的动作。
当用户选择1时,select将其序列数据中的位置1的值赋值给变量i,传递到case```语句,然后做出相应的动作。

break和continue语句

break和continue可以跳出循环。不同的是break会跳出循环,而continue会忽略当此循环,继续下载循环。它们可以在for,while,until循环中使用。

break语句

a7e509b6e401d7235927c5b3e5407bf0.png

在上面的列子中,当i等于2时,当2 % 2 == 0,则会跳出for循环,下面的循环将不会继续。

continue语句

ae33ca83f021da5b134c19077fd87128.png

在上面的列子中,当i % 2 == 0时,continue语句会终止当次循环,继续执行下次循环,从而输出1-10中的奇数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值