shell中while语句的格式:
while ; do
done
while 特殊用法一:
在while循环中经常用到break,continue循环控制语句。下面介绍下continue和break的用法
continue:提前进入下一轮循环,它一定是由于满足一定的条件而触发的,continue触发后,下面的代码段不再继续执行。
用下面的例子来解释:
实例:计算100以内奇数的和。
脚本内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/bash # let SUM=0
let I=0
while [ $I -lt 100 ]; do
let I++
if [ $[$I%2] - eq 0 ]; then
continue
fi
let SUM+=$I
done echo $SUM
|
1
2
|
[root@dnsserver ~] # ./sum.sh
2500 |
来看看continue上面的条件
1
2
|
if [ $[$I%2] - eq 0 ];
continue
|
表示如果$I为偶数,在下面的代码不再执行,而是跳出本次循环,提前进入下一次循环。
break:提前退出循环
实例:计算1+2+3+..+1000, 当和大于5000时,退出循环,不再做加法运算
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/bash # declare -i SUM=0
for I in {1..1000}; do
let SUM+=$I
if [ $SUM -gt 5000 ]; then
break
fi
done echo $I
echo $SUM
|
1
2
3
|
[root@dnsserver ~] # ./sum1000.sh
100 5050 |
while特殊用法二:
while read LINE; do
done < /PATH/TO/SOMEFILE
while可以读取文件(done后面就是制定的文件)中的每一行内容,并保存到LINE这个变量中。
实例:判定/etc/passwd文件中用户是否为bash,如果是bash,则显示用户名
1
2
3
4
5
|
#!/bin/bash FILE= /etc/passwd
while read LINE; do
[ ` echo $LINE | awk -F : '{print $7}' ` == '/bin/bash' ] && echo $LINE | awk -F : '{print $1}'
done < $FILE
|
脚本执行结果:
1
2
3
4
|
[root@dnsserver ~] # ./bash.sh
root zenge test
|
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1775876,如需转载请自行联系原作者