1、while命令
(1)格式
while test command; do
commands
done
while语句中的test command命令和if-then语句的相同。
指定的test command的命令码随着循环中运行的命令改变,从而更新循环的退出状态。
(2)举例
$cat test
#!/bin/bash
#whiel command test
varl=3
while [ $varl -gt 0 ]; do
echo $varl
varl=$[ $varl - 1 ]
done
$./test
3
2
1
2、until命令
格式:
until test command; do
commands
done
until命令和while命令的工作方式完全相反。
当test command的状态退出码为0时,循环结束。
3、控制循环
(1)break命令
跳出单个循环,常用的方式是if-then语句中加入跳出条件;
在处理多个循环时,break命令会自动处理最内层的循环;
跳出外部循环,使用break n;n默认为1,当设为2时,跳出2层循环。
(2)contiune命令
在循环内部设置shell不执行命令的条件;
命令行参数指定继续多级循环:continue n,其中n定义了循环层数,默认为1。
#!/bin/bash
# break and contiune
val=0
while [ $val -lt 15 ]; do
val=$[ $val + 1]
if [ $val -lt 5 ]; then
echo "$val is too small"
continue
elif [ $val -gt 10 ]; then
echo "$val is too big"
break
fi
done
4、处理循环的输出
在循环结构中,可以使用在done后面增加管道命令或者重定向命令处理循环的输出。
for file in /home/rich/*; do
if [ -d "$file" ]; then
echo "$file is a directory"
elif
echo "$file is a file"
fi
done > output.txt
shell脚本会将执行的结果输出到文件中而不是显示在屏幕上。
同时在循环输出时,可以使用管道命令对执行结果进行处理,如果done | sort 排序等。