Linux基础之while语句

一、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

Linux基础之while语句,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。