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

循环语句

在shell中的循环语句以下:shell

  1. for
  2. while
  3. unitl
  4. case
  5. select

for/while/unitl 必须以done结尾编程

for循环

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

在shell中 for循环有两种形式ide

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

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

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

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

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

第二种,示例:blog

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

在上面的循环中,expr1i=0;expr2i<10;expr3i++,其中expr1在循环开始以前执行,expr2定义了运行循环的条件,expr3在循环中执行。索引

while循环

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

语法:class

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

``list-1能够是命令,表达式,若是命令或表达式一直为真则继续执行list-2``` 直到不为真中止循环。
示例:

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

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

示例2,使用表达式:

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

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

until循环

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

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

示例:

Linux shell 编程(八):循环结构
当命令ls执行成功时循环结束,until循环会先判断ls是否执行成功,若是成功则不继续循环,不然继续循环,直到命令执行成功。

while循环同样,until也能够判断表达式,若是表达式执行成功则跳出循环。

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

case语句

case语句是一个模式匹配语句,基于不一样的条件来执行不一样的动做,语法以下:
Linux shell 编程(八):循环结构

它会用word尝试与pattern匹配,若是匹配则运行该模式下的命令.
示例:

Linux shell 编程(八):循环结构
在上面的示例中,将cash.sh传入的第一个参数作匹配,每一个模式下的命令必须以;;结束,而case语句必须以esac结束。*为默认匹配,若是前面的模式都不能匹配,则运行该模式下的命令,若是一个模式下不想执行命令能够输入两个分号;;结束。

select语句

select 语句能够打印一个选项列表,用于与用户交互。
语法:
Linux shell 编程(八):循环结构

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

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

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

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

breakcontinue语句

breakcontinue能够跳出循环。不一样的是break会跳出循环,而continue会忽略当此循环,继续下载循环。它们能够在for,while,until循环中使用。

break语句

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

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

continue语句

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

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

相关文章
相关标签/搜索