如果ICMP回顯失敗,我想省略此IF語句中的錯誤。從shell腳本輸出中省略錯誤
示例代碼:
if ping -q -c 1 -W 1 1.2.3.4 >/dev/null; then
echo -e "PING OK"
else
echo -e "PING NOK"
fi
它完美,如果ping成功或你的腳本之外運行的命令,但給出了下面的輸出,如果沒有響應。
PING 1.2.3.4 (1.2.3.4): 56 data bytes
--- 1.2.3.4 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
PING NOK
我已經看到了有關引用2>/dev/null的答案,但是這會在輸出中顯示整個ping查詢,無論成功與否! 2>/dev/null的示例如下。
PING 1.2.3.4 (1.2.3.4): 56 data bytes
--- 1.2.3.4 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 26.134/26.134/26.134/0.000 ms
PING OK
這是有點問題的n00b,但我是一個網絡的傢伙,不是開發商:)
在此先感謝!
完美!非常感謝。 –
@LiamMulligan我的榮幸。不要忘記將問題標記爲已解決。 – hidefromkgb
使用'&>'不是「更現代化」。這是一種違反shell標準的可怕黑客攻擊(或者至多在標準中利用模糊性)。符合posix標準的shell會將'cmd>/dev/null'解釋爲與執行cmd的cmd>/dev/null'異步,然後執行一個簡單的重定向到/ dev/null。這是一個最好避免的構造。 –