shell脚本编程循环语句

目录

    • 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脚本中的函数及调试

你可能感兴趣的:(shell脚本,shell)