一、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一个循环语句了。今天争取更完。
转载于:https://blog.51cto.com/mybsir/1386984