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 排序等。