shell循环结构

shell循环结构

for循环

语法结构及其特点

特点

遍历/列表式循环
根据变量的不同取值,重复执行命令序列

语法结构

for循环

for循环的执行流程

执行流程

for循环相关案例

案例1:批量添加用户账户(名称无规律)

代码实现

#!/bin/bash
ulist = $(cat /root/users.txt)
for uname in $ulist
do
	useradd $uname
	echo "123456" | passwd --stdin $uname
done

事先创建/root/users.txt存储想要创建的用户名

案例2:测试主机连通性

需求: 测试192.168.2.0网段主机的连通性
代码实现

#!/bin/bash
x=0
y=0
for i in {1..254}
do
ping -c 3 -i 0.2 -W 1 192.168.2.$i &> /dev/null
if [ $? -eq 0 ];then
echo "192.168.2.$i 通了"
let x++        //如果通了一台就把变量x+1
else
echo "192.168.2.$i 不通"
let y++        //如果不通了一台就把变量y+1
fi
done
echo "$x台通了,$y台不通"  

while循环

语法结构及其特点

特点

条件式循环
反复测试条件,只要成立就执行命令序列

语法结构

while循环

while循环的执行流程

while循环执行流程

while循环相关案例

案例1:批量添加用户账户(名称有规律)

代码实现

#! /bin/bash
prefix="tuser" ; i=1
while [ $i -le 5 ]
do
	useradd ${prefix}$i
	echo "123456" | passwd --stdin ${prefix} &> /dev/null
	let i++     //递增控制,避免死循环
done
案例2:整数求和

**需求:**编写脚本,帮用户进行整数求和,如果用户输入0就结束求和,并输出结果
代码实现

#!/bin/bash
x=0
while  :   //while循环后面写冒号代表永远正确可以无限循环
do
read -p "请输入一个整数求和(0是结束并输出结果):"   n
[ -z $n ] && continue    //如果n是空值则重新进行循环任务
[ $n -eq 0 ] && break   //如果n是0则退出循环执行循环后任务
let x+=n    //不断的将n的值保存在x里
done
echo "总和是$x"

循环的控制

exit 可以终止循环,但脚本也终止
break 可以终止循环,继续循环后的任务
continue 可以终止当前循环,继续下一次循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭不戳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值