shell脚本(10)-流程控制while

2021-07-29

一、while循环介绍

while循环与for一样,一般不知道循环次数使用for,不知道循环的次数时推荐使用while

 

二、while语法

while [ condition ] #条件为真才会循环,条件为假,while停止循环 do commands done 

 

三、while实战

1、使用while遍历文件内容

#!/usr/bin/bash while read i do echo "$i" done < $1

查看运行结果:

[root@localhost test20210728]# sh while-1.sh /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt
......

2、while实现账户登录判断

[root@localhost test20210728]# vim while-2.sh #!/usr/bin/bash read -p "login: " account while [ $account != 'root' ] do echo "输入的账户不符合条件,请重新输入:" read -p "login: " account done

查看运行结果:

[root@localhost test20210728]# sh while-2.sh login: test 输入的账户不符合条件,请重新输入: login: root1 输入的账户不符合条件,请重新输入: login: root [root@localhost test20210728]#

3、while+sleep(输出1-10,且每次输出后睡眠1s)

[root@localhost test20210728]# vim while-3+sleep.sh #!/usr/bin/bash i=1
while [ $i -lt 10 ];do echo -n $i" " sleep 1 i=$((i+1)) done echo

查询运行结果:(每秒输出一个数字)

[root@localhost test20210728]# sh while-3+sleep.sh 1 2 3 4 5 6 7 8 9

4、while+break(输出1开始自增,且到5时停止)

[root@localhost test20210728]# vim while-4+break.sh #!/usr/bin/bash i=1
while [ $i -lt 10 ];do echo -n $i" "
  if [ $i -eq 5 ];then break fi i=$((i+1)) done echo

查看运行结果:

[root@localhost test20210728]# sh while-4+break.sh 1 2 3 4 5 

5、while+continue(输出1-10开始自增,且到5时跳过输出)

[root@localhost test20210728]# vim while-5+continue.sh #!/usr/bin/bash i=0
while [ $i -lt 10 ];do i=$((i+1)) if [ $i -eq 5 ];then continue fi echo -n $i" " done echo

查看运行结果:

[root@localhost test20210728]# sh while-5+continue.sh 1 2 3 4 6 7 8 9 10