下面介绍几种shell相关循环命令:
1)for
列表是一组值(数组、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。
in列表是可选的,如果不用它,for循环使用命令行的位置参数
for 变量 in 列表
do
command1
command2
...
commandN
done
2)while
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件,其格式为:
while command
do
语句
done
3)until
until循环执行一系列命令直至条件为true时停止。until循环与while循环在处理方式上刚好相反,command一般为条件表达式,如果返回值为false,则继续执行循环体内的语句,否则跳出循环:
until command
do
语句
done
4)break
break命令允许跳出所有循环(终止执行后面的所有循环)
在嵌套循环中,break命令后面还可以跟一个整数,表示跳出第几层循环,例如:
break n #n表示跳出第n层循环
嵌套循环break的例子,如果var1等于2,并且var2等0,就跳出循环:
#!/bin/bash
for var1 in 1 2 3
do
for var 2 in 0 5
do
if [ $var1 -eq 2 -a $var2 -eq 0 ]
then
break 2
else
echo "$var1 $var2"
fi
done
done
5)continue
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环:
#!/bin/bash
while:
do
echo -n "Input a number between 1 to 5:"
read aNum
case $aNum in
1|2|3|4|5)
echo "Your number is $aNum!"
;;
*)
echo "You do not select a number between 1 to 5!"
continue
;;
esac
done
同样,continue后面也可以跟一个数字,表示跳出第几层循环。