語法結構:
- ????????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.txtfor i in {2..254}
do
ip=192.168.151.$iping -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.txtfor 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 #執行腳本
?
?
?
?
?