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 等命令。
ICP备案:
公安联网备案: