Shell循环:for(一)

语法结构:

  •         for 变量名 [ in 取值列表]
  •         do
  •         循环体
  •         done

        示例1:

                1、需求:自动循环创建10个用户

                2、演示:

[root@localhost ~]# vim for.sh    #脚本编写
#!/bin/bash
for i in {1..10}
do
useradd "user$i"
done

[root@localhost ~]# bash for.sh     #执行脚本

 

 

 

        示例2:ping测试主机

                1、需求:通过循环工具,探测全网主机。将在线主机记录在文本中。

                2、分析:

                        1、编写常规ping测试脚本(无循环)

  •                 2、添加循环语句。for i in {2..254}

    •         3、优化脚本(后台执行,清空脚本,循环完成提示,wait间隔)

    • 3、演示:

    • [root@localhost ~]# vim ping1.sh    #脚本编写
      ##1、编写ping脚本
      #!/bin/bash
      ping -c1 -W1 192.168.151.151 &> /dev/null
      if [ $? -eq 0  ]
      then
      echo "192.168.151.151"  | tee -a  ip.txt
      else
      echo "192.168.151.151"  >> downip.txt
      fi
      
      [root@localhost ~]# chmod +x ping1.sh    #脚本授权
      
      [root@localhost ~]# ./ping1.sh     #执行脚本

[root@localhost ~]# vim ping1.sh    #脚本编写
##2、使用循环
#!/bin/bash
>ip.txt
>downip.txt

for i in {2..254}
do
ip=192.168.151.$i

ping -c1 -W1 $ip  &> /dev/null
if [ $? -eq 0  ]
then
echo "$ip"  | tee -a  ip.txt
else
echo "$ip"  >> downip.txt
fi
done

[root@localhost ~]# ./ping1.sh     #执行脚本

 

[root@localhost ~]# vim ping1.sh     #编写脚本
##3、优化脚本
#!/bin/bash
>ip.txt         #清空文本记录
>downip.txt

for i in {2..254}
do
{           
ip=192.168.151.$i 
            
ping -c1 -W1 $ip  &> /dev/null
if [ $? -eq 0  ]
then
echo "$ip"  | tee -a  ip.txt
else
echo "$ip"  >> downip.txt
fi  
}&  
done
wait    #等待前一个程序执行完毕。在执行下一个命令。
echo "在线主机测试完毕。"

[root@localhost ~]# ./ping1.sh     #执行脚本

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值