1、Shell for循环的语法如下所示:
1)for 变量 in 列表 do command1 command2 ... commandN done
列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的值依序放入指定的变量中,然后重复执行命令区域(在do和done 之间),直到所有元素取尽为止。
2)for 变量 do 语句 done
3)for ((变量=初始值; 条件判断; 变量变化)) do 语句 done
for 循环仍然可以进行嵌套,有两条命令可以终止循环迭代:break、continue;使用break命令跳出循环,continue命令是一种提前停止循环内命令,而不完全终止循环的方法。这就允许在循环中设置shell不执行命令的条件。
for循环示例: #!/bin/sh for i in {1..9} #取1-9的数字 do for n in {1..9} #取1-9的数字 do [ $i -ge $n ] && echo -n "${i}x${n}=$((i*n)) " #如果$i大于等于$n,则输出。 done echo " " done
2、while循环
while循环是Shell中常用的语法结构,其常用格式如下:
1)while 条件 do 语句 done 2)while true #死循环 do 语句 done 3)while : #死循环 do 语句 done 4)while [ 1 ] #死循环 do 语句 done 5)while [ 0 ] #死循环 do 语句 done
command 为条件测试,如果传回值为0(条件测试为真),则进入循环,执行命令区域,否则不进入循环。在执行命令的区域中,应该要有改变条件测试的命令,这样,才有机会在有限步骤后结束执行while循环(除非想要执行无穷循环)。while循环通常用来不断执行一系列命令,也可以用来从输入文件中读取数据;命令通常为测试条件。
while 示例: #!/bin/bash while read text do echo ${text} done < /home/infile
说明:这个例子使用read在标准输入读取数据,放入变量text中,如果读到的数据非空,就进入循环。然后在循环中把该行数据显示出来。最后一样是输入重定向,将/home/infile的内容作为此脚本的标准输入。此脚本的输出结果就是infile文件的内容。
3、until 循环
until command do list done
until 是在 return value 为 false 时进入循环,否则结束。