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 时进入循环,否则结束。