Shell脚本总结-while 循环

 while 循环里,每进行一次循环,条件都会被判断一次,来确定本次循环是否该继续。

while循环语句主要用来重复执行一组命令或语句,一直到条件不再满足为止,常用于守护进程或持续运行的程序。

格式

一般格式
while <条件表达式>   #条件表达式为真则执行下面的命令集
do
  命令集/程序
done



2、死循环格式
while true //或真或假
do
  命令集
done
死循环的条件一定是为真的。



3、按行读取相应的文件内容并处理
while read line
do
  命令集/程序
done < path to file

条件表达式

死循环

[root@ldpbzhaonan bash]$ cat while01.sh
while [[ 1+1 ]]
do
  echo ‘'a'
done

条件就是因为1+1永远为真,所以条件永远成立,所以会一直执行。也就是所谓的死循环。

设置限制条件

例子一

[root@LDP ~]# cat 4.sh 
a=1
#设置变量
while (( $a <= 6))
#相当于设置一个限制,循环到a小于等于6就停止循环。
do 
#开始循环
 echo $a
第一次循环输出1
 let "a++"
#设置a不断加一,如果此时a=1 则输出。本输出完成之后,a=2,再回到上面查看逻辑是否成立。以此类推
#换句话说,就是只要a只要不大于6,此循环就会一直循环下去
 done
[root@LDP ~]# bash 4.sh 
1
2
3
4
5
6

例子二

[root@ldpbzhaonan bash]$ cat while01.sh
nb=1
nc=6
while [ ${nb} -le ${nc} ]
 do
    echo ${nb}
     (( nb++ ))

    done
[root@ldpbzhaonan bash]$ bash while01.sh
1
2
3
4
5
6

设置变量nb初始值为1,设置如果条件nb小于nc,则输出nb的变量。

(( nb++ )) 就是初始每循环一次,nb值加1。

这样的话nb一直变为6,则条件不成立,则停止输出。

死循环格式

例子一

[root@ldpbzhaonan bash]$ cat while02.sh
while [ 1 ]
  do
    printf "你好\n"
    sleep 5
done
[root@ldpbzhaonan bash]$ bash while02.sh
你好
你好
你好

这里就是使用了数字1会一直存在,所以会一直输出你好。

sleep在这里就是让脚本每五秒执行一次

例子二

[root@ldpbzhaonan bash]$ cat while03.sh

while true
do
printf  "你好\n"

sleep 3
done
[root@ldpbzhaonan bash]$ bash while03.sh
你好
你好
你好

按行读取相应的文件内容并处理

read命令

[root@ldpbzhaonan bash]$ read name
yjs
[root@ldpbzhaonan bash]$ echo ${name}
yjs

输入read后面跟变量名称 ,使用键盘输入变量的值。执行变量名称(${变量名称}),就会根据需要显示该变量。

例子一

[root@ldpbzhaonan bash]$ cat while04.sh

printf "请填写您的年龄: "
# 输出提示信息,要求用户输入年龄
while read name
# 使用循环读取用户的输入,并将其存储在变量name中
do
  printf "您输入的年龄是:${name}\n"
# 输出用户输入的年龄
done
[root@ldpbzhaonan bash]$ bash while04.sh
请填写您的年龄: 10
您输入的年龄是:10
20
您输入的年龄是:20
30
您输入的年龄是:30

这里就是将用户输入的内容会存储在name里面,用户输入不同的内容,name的变量也会不同。并且这段代理会不断的执行下去,除非用户手动停止。

设置停止条件

[root@ldpbzhaonan bash]$ cat while04.sh

printf "请填写您的年龄: "
while read name
do
  printf "您输入的年龄是:${name}\n请填写您的年龄: "
  if [ ${name} == 100  ]
    then
       printf "程序退出\n"
       exit
  fi
done
[root@ldpbzhaonan bash]$ bash while04.sh
请填写您的年龄: 20
您输入的年龄是:20
请填写您的年龄: 100
您输入的年龄是:100
请填写您的年龄: 程序退出

这里就是判断变量为100的话,脚本执行exit。也就是退出。

循环嵌套

输入重定向

[root@ldpbzhaonan bash]$ cat while05.sh

while read line
  do
    echo ${line}
done < /etc/passwd|head

  
[root@ldpbzhaonan bash]$ 
[root@ldpbzhaonan bash]$ bash while05.sh
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
  1. while read line:使用 while 循环,每次读取一行数据到变量 line 中。
  2. do:开始循环体。
  3. echo ${line}:输出当前行的内容。
  4. done:结束循环体。
  5. < /etc/passwd:将 /etc/passwd 文件作为输入。
  6. head:只输出前10行内容。

终止循环

break

直接终止当前循环,不在执行之后的代码

[root@ldpbzhaonan bash]$ cat while07.sh

counter=0
while [ $counter -lt 5 ]
 do
   ((counter++))
   if [ $counter -eq 3 ]
    then
     break
   fi
   echo "Cure:$counter"
done
[root@ldpbzhaonan bash]$ bash while07.sh
Cure:1
Cure:2

continue

还会执行之后的代码

[root@ldpbzhaonan bash]$ cat while07.sh

counter=0
while [ $counter -lt 5 ]
 do
   ((counter++))
   if [ $counter -eq 3 ]
    then
     continue
   fi
   echo "Cure:$counter"
done
[root@ldpbzhaonan bash]$ bash while07.sh
Cure:1
Cure:2
Cure:4
Cure:5

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值