Shell支持三种循环语句(Bash Loops),分别是
for循环语法的格式一般如下:
for var in var_list
do
command1
command2
command3
...
commandN
done
变量列表var_list是一组值(数字,字符串,命令行参数,文件名以及Linux命令输出等)组成的序列,每个值通过空格分割,每循环一次,将列表中的下一个值赋给变量。 注意:in变量列表是可选的,如果不用它,for循环使用命令行的位置参数。下面举两个例子说明。
第一个例子
#!/bin/bash
for var in 1 2 3 4 5
do
echo "The Value is $var"
done
第二个例子
#!/bin/bash
for FILE in $HOME/.bash*
do
echo $FILE
done
无线循环语法:
for (( ; ; ))
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:
while command
do
statements
done
值得注意的是:
- 命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。
- while循环可用于读取键盘信息。举例如下:
#!/bin/bash
#按<Ctrl-D>结束循环
echo "Type <Ctrl-D> to terminate"
echo -n "Enter your name:"
while read NAME
do
ehco "Your name is $NAME"
done
无限循环语法:
while :
do
command
done
或者
while true
do
command
done
Eg: menu.sh
until循环执行一系列命令直至条件为true时停止,因此until与while循环在处理方式刚好相反。until循环格式为:
until [ condition ]
do
statements
done
command一般为条件表达式,如果返回值false,则继续执行循环体内的语句,否则跳出循环。
Select循环的语法为:
select varName in list
do
statements
done
或者
select varName in list
do
case $varName in
pattern1)
command1;;
pattern2)
command2;;
*)
echo "Error select option";;
esac
done
值得注意的是: 1、可以使用环境变量PS3定制select循环的提示符; 2、可以使用if..else.fi或者case..in..esac结构