shell脚本编程循环语句

Dora ·
更新时间:2024-11-13
· 802 次阅读

目录for循环语句while循环语句循环控制及状态返回值

        ~~~~~~~~        因为想要面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。 ​​​​
                                                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                ————玛丽亚·杜埃尼亚斯

for循环语句

for循环结构中,for语句的操作对象为用户指定名称的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间用空格来进行分割。do…done之间的命令序列称之为循环体,而其中的执行语句需要引用变量以完成响应的任务。
for循环语法结构为:

for 变量名 in 取值列表 do 命令序列 Done

执行流程:首先将列表中的第1个取值赋值给变量,并执行do…done循环体中的命令序列;然后将列表中的第2个取值赋值给变量,并执行循环体中的命令序列,直到列表中的所有取值都用完,最后将跳至done语句,表示结束循环。
举例说明
根据姓名列表批量添加和删除用户

# vim /root/users.txt //用做测试的列表文件 chenye dengchao zhangjie # vim uaddfor.sh //批量添加用户的脚本 #!/bin/bash ULIST=$(cat /root/users.txt) for UNAME in $ULIST do useradd $UNAME echo "123456" | passwd --stdin $UNAME &>/dev/null done # vim udelfor.sh //批量删除用户的脚本 #!/bin/bash ULIST=$(cat /root/users.txt) for UNAME in $ULIST do userdel -r $UNAME &>/dev/null done

根据IP地址列表检查主机状态

# vim /root/ipadds.txt //用做测试的列表文件 192.168.4.11 192.168.4.110 192.168.4.120 # vim chkhosts.sh //循环检查各主机的脚本 #!/bin/bash HLIST=$(cat /root/ipadds.txt) for IP in $HLIST do ping -c 3 -i 0.2 -W 3 $IP &> /dev/null if [ $? -eq 0 ] then echo "Host $IP is up." else echo "Host $IP is down." fi done while循环语句

while循环语句命令常用于重复执行一条或一组命令,直到条件不满足停止。
while语句语法结构:

while 条件测试操作 do 命令序列 done

执行流程:首先判断条件测试是否成立,如果成立则执行do后命令序列,执行完后回到条件测试再次进行判断条件是否成立,成立继续执行do,直到条件不成立后跳转至done结束循环。
举例说明
批量添加或删除规律编号的用户

批量添加用户 # vim uaddwhile.sh #!/bin/bash PREFIX="stu" i=1 while [ $i -le 20 ] do useradd ${PREFIX}$i echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null let i++ done 批量删除用户 # vim udelwhile.sh #!/bin/bash PREFIX="stu" i=1 while [ $i -le 20 ] do userdel -r ${PREFIX}$i let i++ done

猜价格游戏

# vim pricegame.sh #!/bin/bash PRICE=$(expr $RANDOM % 1000) TIMES=0 echo "商品实际价格范围为0~999,猜猜看是多少?" while true do read -p "请输入你猜测的价格数目:" INT let TIMES++ if [ $INT -eq $PRICE ];then echo "恭喜你答对了!实际价格是$PRICE" echo "你总共猜测了$TIMES次" exit 0 elif [ $INT -gt $PRICE ];then echo "太高了!" else echo "太低了!" fi done 循环控制及状态返回值

break、continue在条件语句及循环语句(for、while、if等)中用于控制程序的走向,而exit则用于终止所有语句并退出当前脚本,除此之外,exit还可以返回上一次程序或命令的执行状态值给当前shell。

命令 说明
break [n] 如果省略n表示跳出整个循环,n表示跳出循环的层数
continue [n] 如果省略n表示跳过本次循环,忽略本次循环的剩余代码,进入下一次循环。n表示退到第n层继续循环
exit [n] 退出当前shell程序,n为上一次程序执行的状态返回值。n也可以省略,在下一个shell里可以通过$?接收exit [n]的n值
return [n] 用于结束函数并返回一个结果,如不带参数则返回函数体中最后一个命令的返回值

相关文章:
linux之shell脚本基础
shell编程之条件判断语句
shell脚本编程之case语句
shell脚本中的函数及调试


作者:whoim_i



shell脚本编程 循环 shell脚本 shell 循环语句

需要 登录 后方可回复, 如果你还没有账号请 注册新账号