閱讀359 返回首頁    go 阿裏雲 go 技術社區[雲棲]


利用for循環完成你的第一個腳本

腳本涉及內容:
ping -c# IP :向目標IP發送#個包,測試是否可達。

命令狀態結果:
成功:0 失敗:1-255

說明:當你執行完成一條命令時,使用echo $?即可測試命令是否成執行,如果返回0則表示你的命令執行成功了,如果返回值為1-255的數值,則表示你的命令執行失敗。

示例

[root@smokeping etc]# ls -d /etc
/etc
[root@smokeping etc]# echo $?
0  
[root@smokeping etc]# echo $?
127

bash的測試類型:

數值測試:

-gt:是否大於;
-ge:是否大於等於;
-eq:是否等於;
-ne:是否不等於;
-lt:是否小於;
-le:是否小於等於;

這裏我們需要用到-eq來測試echo $?的值是否等於0,來檢驗我們的命令是否成完成了。

輸出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS

>:覆蓋重定向,目標文件中的原有內容會被清除;
>>: 追加重定向,新內容會追加至目標文件尾部;
說明:腳本中我們需要將存在IP輸出到一個文本,將不存在的IP輸出到另一個文本。

腳本測試:

[root@smokeping tmp]# bash -x ping.sh
說明:測試腳本執行,可詳細的顯示出腳本錯誤在哪一步,誰用誰知道。

以上內容結合if與for即可。 好了,上腳本。

#!/bin/bash
for i in 172.20.16.{1..255}  
    do
    {
    ping -c2 $i &> /dev/null
    if [ $? -eq 0 ];then
                echo $i>>huo.txt
    else
                echo $i>>si.txt
    fi
    }
    done

在調試腳本過程中遇到了些問題,如if後邊空格,以及條件測試中[ $? -eq 0 ]的空格等等,都是些小細節,希望大家多多注意。

最後更新:2017-10-23 10:33:39

  上一篇:go  K8S學習筆記
  下一篇:go  CentOS7安裝與配置Zabbix