while循环特殊用法

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 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,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值