~~~~~~~~ 因为想要面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ————玛丽亚·杜埃尼亚斯
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脚本中的函数及调试