文章目录
引言:在shell编程中,除了选择判断之外,对一些特殊情况需要进行循环操作,比如遍历目录文件,批量添加用户等操作,都需要循环操作
一.for循环基本格式
语法格式:
for 变量名 in 取值列表
do
命令
done
for循环执行次数,取决于取值列表中的变量个数
foriin{1..5};doecho$i;done{1..5}为取值范围1到5
echo$i 输出当前的取值
for((i=1;i<=5;i++));doecho$i;done
使用(())双括号,可以支持C语言的一些命令
i=1;i<=5;i++ #i初始值为1,如果i小于等于5时执行循环,每次循环后+1
foriin`seq5`;doecho$i;doneseq5 与{1..5}效果一样
foriin`seq5`;doecho"hello world";done
使用变量i 循环5次
每次执行echo "hello world"命令
使用for循环遍历当前目录
二.for循环脚本
利用for循环,实现的简单脚本
2.1测试主机状态
检测局域网内,主机存活状态
#!/bin/bashforIPin`cat /root/for/ip.txt`#ip文件为存放ip地址的doping -c 3 -i 0.2 -w 3$IP&>/dev/null #-c 3 ping3次主机 -i 0.2ping主机间隔 -w 3ping主机超时间隔if[$? -eq 0];thenecho"host $IP is up"elseecho"host $IP is down"fidone
2.2添加用户
利用for循环与if条件语句,进行批量添加用户
#!/bin/bashforuserin`cat /root/for/a.txt`#a.txt为存放用户名单文件doifgrep$user /etc/passwd &>/dev/null;then#检查用户是否存在 echo"$user用户已经存在"elif[ -d /home/$user];then#检查home下是否存在和用户相同的目录 echo"$user用户存在宿主目录"elseuseradd$user#添加用户并设置初始密码 echo"123456"|passwd --stdin $user&>/dev/null
echo"$user用户已经创建,初始密码为:123456"fidone
用户状态存在或存在异常
2.3乘法表
利用for循环,打印99乘法表
#!/bin/bashfor((i=1;i<=9;i++))#此处也可以写 for i in {1..9}dofor((j=1;j<=i;j++))#此处也可写 for j in `seq $i`doecho -n -e "$j*$i=$[j*i]\t"#-n不换行输出;-e使用\转义符;\t横向制表;若不用-e,则\t为普通字符doneechodone
三.总结
1.for循环在实际生成中应用非常多,避免人工重复的去操作某个事情
2.for循环中的列表支持正则表达式
3.for循环中使用(()),双括号内支持C语言的命令
4.for循环中的变量,只是循环去取值列表中取值,然后进行do操作,所以取值列表中的参数个数,决定了循环的次数
版权归原作者 Sq夏颜 所有, 如有侵权,请联系我们删除。