一、while语句
while语句是shell脚本中的循环语句,语法格式如下
while 测试条件;do
语句1
语句2
done
解释:当测试条件满足的时候循环,当测试条件不满足的时候跳出循环
二、常见使用
1、经典while语句
计算1到100之间的和
#!/bin/bash #Version 0.1 #Author:Myb_sir #Pragarm:计算1到100之间所有整数的和 #Date:2014-03-30 #定义变量 declare -i Sum=0 declare -i i=1 while [ $i -le 100 ];do #下方这条while语句也可以实现循环条件 #while (($i<101));do let Sum+=i let ++i #下方这两行语句也可以实现变量Sum和i的重新赋值 #Sum=$[$Sum+$i] #i=$[$i+1] done echo "1到100之间所有整数的和为$Sum"
结果如下
[root@myb362 scripts]# ./whilesum.sh 1到100之间所有整数的和为5050
2、while read line 用法之读取文件
在Linux中有很多方法逐行读取一个文件,其中最常用的就是while read line 这种方法,而且效率最高,使用最多。
语法结构
while read line;do
echo $line
done < /etc/passwd
取出系统中的所有用户和shell
#!/bin/bash #Version 0.1 #Author:Myb_sir #Pramgram:显示系统中的所有用户和默认shell #Date:2014-03-30 while read line;do User=`echo $line |cut -d: -f 1` Shell=`echo $line |cut -d: -f 7` echo "用户$User的默认shell是$Shell" done < "/etc/passwd"
执行结果
[root@myb362 scripts]# ./whileuser.sh 用户root的默认shell是/bin/bash 用户bin的默认shell是/sbin/nologin 用户daemon的默认shell是/sbin/nologin 用户adm的默认shell是/sbin/nologin 用户lp的默认shell是/sbin/nologin 用户sync的默认shell是/bin/sync 用户shutdown的默认shell是/sbin/shutdown 用户halt的默认shell是/sbin/halt 用户mail的默认shell是/sbin/nologin 用户uucp的默认shell是/sbin/nologin 用户operator的默认shell是/sbin/nologin 用户games的默认shell是/sbin/nologin 用户gopher的默认shell是/sbin/nologin 用户ftp的默认shell是/sbin/nologin 用户nobody的默认shell是/sbin/nologin 用户vcsa的默认shell是/sbin/nologin 用户saslauth的默认shell是/sbin/nologin 用户postfix的默认shell是/sbin/nologin 用户sshd的默认shell是/sbin/nologin
3、while read line用法之管道
语法结构
command Filename |while read line;do
echo $line
done
上边的例子同样还可以这样写
#!/bin/bash #Version 0.1 #Author:Myb_sir #Pramgram:显示系统中的所有用户和默认shell #Date:2014-03-30 cat /etc/passwd|while read line;do User=`echo $line |cut -d: -f 1` Shell=`echo $line |cut -d: -f 7` echo "用户$User的默认shell是$Shell" done
执行结果
[root@myb362 scripts]# ./whileuser.sh 用户root的默认shell是/bin/bash 用户bin的默认shell是/sbin/nologin 用户daemon的默认shell是/sbin/nologin 用户adm的默认shell是/sbin/nologin 用户lp的默认shell是/sbin/nologin 用户sync的默认shell是/bin/sync 用户shutdown的默认shell是/sbin/shutdown 用户halt的默认shell是/sbin/halt 用户mail的默认shell是/sbin/nologin 用户uucp的默认shell是/sbin/nologin 用户operator的默认shell是/sbin/nologin 用户games的默认shell是/sbin/nologin 用户gopher的默认shell是/sbin/nologin 用户ftp的默认shell是/sbin/nologin 用户nobody的默认shell是/sbin/nologin 用户vcsa的默认shell是/sbin/nologin 用户saslauth的默认shell是/sbin/nologin 用户postfix的默认shell是/sbin/nologin 用户sshd的默认shell是/sbin/nologin
四、无限循环
while中无限循环使用((1))或者[1]
语法结构
while (());do
语句1
语句2
…
done
或者使用条件判断也可以
while [ 1 –gt 0 ];do
语句1
语句2
…
done
总结:以上是while语句的基本用法。还有until一个循环语句了。今天争取更完。
本文出自 “Linux步行街” 博客,请务必保留此出处http://mybsir.blog.51cto.com/4618614/1386984