shell之循环语句
1、 shell中的循环语句
循环语句,主要是为了简化重复动作代码,在运维方面主要用于重复某项动作,例如批量创建用户,在shell中主要有两种 while循环 与 for 循环。
1、while循环
while 循环主要用于无限次的循环情况,例如登录认证,你不知道多少次可以登录成功,当然可以认为限制登录次数。
1.1、while循环 的结构
#!/bin/bash while true do echo "哈哈哈哈哈哈哈哈哈" #循环体 done
1.2、 while循环脚本示例
1)、while循环从文件读取用户,增加用户,并且设置密码。
1、创建用户文件 [ ~]# cat >123.txt<<-EOF love1 love2 love3 love4 love5 EOF 2、while 脚本 #!/bin/bash rm -rf info.txt &>/dev/null while read user do id $user &>/dev/null if [ $? -ne 0 ];then useradd $user &>/dev/null pwd=`mkpasswd -l 10` echo $pwd | passwd --stdin $user &>/dev/null echo "$user:$pwd"|tee -a info.txt echo " 用户 $user 添加成功..." else echo "$user 已经存在..." fi done<123.txt
2)批量添加指定前缀,数量的用户
#!/bin/bash read -p "请输入用户前缀,密码,数量:" pre pass num if [[ ! $num =~ ^[0-9]+ ]];then ehco "请输入数字" fi cat <<EOF 你输入的用户名前缀为:$pre 你设立的密码为:$pass 你设定用户个数为:$num EOF while true do read -p "你确定要创建?" ch case $ch in y|yes) for i in `seq $num`;do id $pre$i &>/dev/null if [ $? -ne 0 ];then useradd $pre$i echo "用户 $pre$i 创建成功..." echo $pass|passwd --stdin $pre$i &>/dev/null else continue echo "用户 $pre$i 已经存在..." fi done break ;; n|no) exit 1 ;; *) echo "错误输入,请重新输入..." esac done
3)、批量删除用户
#!/bin/bash read -p "请输入用户前缀,数量:" pre num cat <<EOF 你输入的用户名前缀为:$pre 你设定用户个数为:$num EOF while true do read -p "你确定要删除?" ch case $ch in y|yes) for i in `seq $num`;do id $pre$i &>/dev/null if [ $? -eq 0 ];then userdel -r $pre$i echo "用户 $pre$i 删除成功..." else continue echo "用户 $pre$i 不存在..." fi done break ;; n|no) exit 1 ;; *) echo "错误输入,请重新输入..." esac done
2、for 循环
for 循环主要用于有限次数循环,例如测试一个网段内地ip是否通达,又或者我们要循环迭代一个文件的内容,我们可以for循环来完成工作
2.1 for 循环结构
for i in `seq 5` #可循环迭代的对象,例如一个打开的文件,{1..100}等 do echo "haha $i" #循环体,for循环从中依次取值 done
2.2 for循环脚本
1)检测子网段内ip的通达性
#!/bin/bash for i in {1..200} do { ip=100.100.100.$i ping -c1 -w1 $ip if [ $? -eq 0 ];then echo "$ip"|tee -a ip.txt fi }& done wait cat ip.txt
2)批量修改子网段ssh登陆密码
#!/bin/bash for i in {10..200} do { ip=100.100.100.$i ping -c1 -w1 $ip &>/dev/null if [ $? -eq 0 ];then ssh $ip "echo 123456 |passwd --stdin root" &>/dev/null echo "$ip"|tee -a ch_ip.txt else echo "$ip"|tee -a er_ip.txt fi }& done
3)、批量添加用户
#!/bin/bash read -p "请输入用户前缀,密码,数量:" pre pass num if [[ ! $num =~ ^[0-9]+ ]];then ehco "请输入数字" fi cat <<EOF 你输入的用户名前缀为:$pre 你设立的密码为:$pass 你设定用户个数为:$num EOF while true do read -p "你确定要创建?" ch case $ch in y|yes) for i in `seq $num`;do id $pre$i &>/dev/null if [ $? -ne 0 ];then useradd $pre$i echo "用户 $pre$i 创建成功..." echo $pass|passwd --stdin $pre$i &>/dev/null else continue echo "用户 $pre$i 已经存在..." fi done break ;; n|no) exit 1 ;; *) echo "错误输入,请重新输入..." esac done
2、循环中用到的一些其他shell命令
1、break 结束循环 2、exit 退出整个脚本 3、continue 忽略本次循环剩余的代码,直接进?下一次循环
相关推荐
zhaobig 2020-08-17
TreasureZ 2020-08-02
NewActivity 2020-07-23
Jieen 2020-07-09
yawei 2020-07-06
AndroidAmelia 2020-05-17
fly00love 2020-05-16
zhuxianfeng 2020-05-17
银角大王 2020-05-11
joyjoy0 2020-05-09
伏雌摘星阁 2020-04-22
流云追风 2020-04-22
拉斯厄尔高福 2020-04-11
flycony 2020-04-10
致终将努力的我们 2020-04-08
duanlove技术路途 2020-01-16
doubinning 2020-01-10
赵家小少爷 2020-01-04
katyusha 2020-01-02