Shell while循环用法详解(附带实例)
while 循环和 until 循环都是不定循环,也称作条件循环,主要是指循环可以一直进行,直到用户设定的条件达成为止,语法如下:

图 1 while循环
我们再写一个从 1 加到 100 的例子,这种例子虽然对系统管理帮助不大,但是对理解循环非常有帮助。
例如,使用 while 循环从 1 加到 100:
在 while 循环中,可以使用 true 代替条件判断式,true 表示判断为真,这样 while 就可以无限循环下去了。但即便无限循环执行的只是一条简单的 echo 命令,也会因为持续不断地执行 echo 最终占用过多的系统资源。因此,在执行 while 无限循环期间,我们需要通过某些方式让循环停下来。
例如,read 语句就能够让无限循环暂停来等待键盘输入,避免占用过多的系统资源。接下来举例说明:
while [ 条件判断式 ] do 程序 done对 while 循环来说,只要条件判断式成立,循环就会一直进行,直到条件判断式不成立,循环才会停止,如下图所示:

图 1 while循环
我们再写一个从 1 加到 100 的例子,这种例子虽然对系统管理帮助不大,但是对理解循环非常有帮助。
例如,使用 while 循环从 1 加到 100:
#!/bin/bash i=1 s=0 # 给变量i和变量s赋值 while [ $i -le 100 ] # 如果变量i的值小于等于100,就执行循环 do s=$(( $s+$i )) i=$(( $i+1 )) done echo "The sum is: $s"解释一下脚本思路:对于 while 循环来讲,只要条件判断式成立,循环就会执行。因此,只要变量 i 的值小于等于 100,循环就会继续。每次循环给变量 s 加入变量 i 的值,再给变量 i 加 1,直到变量 i 的值大于 100,循环才会停止。然后输出变量 s 的值,也就是从 1 加到 100 的总和。
在 while 循环中,可以使用 true 代替条件判断式,true 表示判断为真,这样 while 就可以无限循环下去了。但即便无限循环执行的只是一条简单的 echo 命令,也会因为持续不断地执行 echo 最终占用过多的系统资源。因此,在执行 while 无限循环期间,我们需要通过某些方式让循环停下来。
例如,read 语句就能够让无限循环暂停来等待键盘输入,避免占用过多的系统资源。接下来举例说明:
[root@localhost ~]# cat /root/while.sh #!/bin/bash while true do cat << EOF 1. SELinux ON 2. SELinux OFF 3. IP DHCP 4. IP Static EOF read -p "请输入您的选择(1-4):" slct case "$slct" in 1) echo "SELinux ON..." 2) echo "SELinux OFF.." 3) echo "DHCP IP.." 4) echo "Static IP..." ;; *) echo "Error, Please input 1|2|3|4" esac done在 while.sh 脚本执行后,就会进入无限循环,在执行脚本期间,我们可以反复多次修改 SELinux 状态或修改 IP 地址的获取方式,如果想要退出脚本,那么可以使用 Ctrl+C 快捷键实现。在 case 语句中,在修改每个配置文件的修改时,均可将其替换为此前学过的 sed 等命令。