除了if…then…fi这种条件判断是之外,循环可能是程序当中最重要的一环了。循环可以不断地执行某个程序段落,直到用户设置的条件达成为止。循环有“条件的完成”,也有固定跑多少次的循环,可称为固定循环的状态。

1 while do done,until do done(不定循环)

 while [condition]
 dodo是循环的)
  程序段落
 done   (done是循环的结束)

while的中文是“当…时",所以,这种方式说的是当condition条件成立时,就进行循环,直到condition的条件不成立才停止的意思。还有一种不定循环的方式:

until [condition]
do
	程序段落
done

这种与while相反,说的是当condition条件成立时,就终止循环,否则就持续进行循环的程序段。是否刚好相反啊。

示例1:让用户输入yes或者YES才结束程序的执行,否则就告诉用户输入字符串。

下面用while进行练习:

vim sh13.sh
在这里插入图片描述

执行结果
在这里插入图片描述
下面使用until进行练习
在这里插入图片描述
测试结果:
在这里插入图片描述
示例2:计算1+2…+100。

在这里插入图片描述
执行结果:
在这里插入图片描述

注意: $ 0 :就是该bash文件名,个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住,如${10}.

2 for…do…done(固定循环)

相对于while,until 的循环方式是必须要”符合某个条件“状态,for这种语法则是”已经知道要进行几次循环“的状态!,它的语法是:

for var in con1 con2...
do
	程序段
done

上面的例子就是,$var变量内容在循环工作时:
1.第一次循环时, $var的内容时con1;
2.第二次循环时, $var的内容是con2;

示例1:有三种水果apple、pear、graph,需要每一行输出There are fruits…
在这里插入图片描述

执行结果:
在这里插入图片描述

示例2:由于系统上面的各种账号都是写/etc/passwd内的第一个字段,你能不能通过管道命令的cut找出单纯的账号名称后,以id及finger分别检查用户的标识符与特殊参数呢?由于不同的Linux系统上面的账号都不一样!此时实际去获取/etc/passwd并使用循环处理。
在这里插入图片描述
在这里插入图片描述
示例3: 让用户输入目录文件名,找出目录内的文件名的权限

vim sh17.sh
在这里插入图片描述
在这里插入图片描述

执行结果:
在这里插入图片描述
在这里插入图片描述

3 for…do…done的数值处理

for循环的另一种写法

for ((初始值;限制值;执行步长))
do
	程序段
done

这种语法适合于数值方式的运算中,在for后面的括号内三串内容意义为:
1)初始值:某个变量在循环当中的初始值,直接以类似i=1设置好;
2)限制值:当变量的值在这个限制值范围内,就继续进行循环,例如i<=100;
3)执行步长:每做一次循环时变量的变化值。例如i=i+1。

值得注意:在执行步长的设置上,每次增加1,就使用类似”i++“的方式

示例:以这种方式进行1累加到用户输入的循环
vim sh18.sh
在这里插入图片描述
执行结果:
在这里插入图片描述

Logo

更多推荐