2015-10-06 27 views
0

我已經檢查了其他人的問題,雖然我遵循給予他們的建議,但我的腳本仍然無法正常工作。Bash if-statement總是觸發「然後...」

如果我的腳本獲取參數「test」並測試目標是否可達,我想ping一個ip-address。

如果腳本執行時沒有命令,我想發送一個WakeOnLan包。

這裏是我的代碼:

#!/bin/bash 

if [ "$1"="test" ]; 
then 
    if ping -c 5 -i 1 192.168.178.27; then echo "Desktop is reachable"; else echo "Desktop not (yet) reachable"; fi 

else 
    echo "sending magic package" 
    sudo wakeonlan FC:AA:14:E7:CD:95 
fi 
+3

你需要等號周圍的空間:'如果[ 「$ 1」 =「test」]'。 –

+0

我很抱歉在這個平臺上發送垃圾郵件。非常感謝!我確定我的支架和條件之間有空格,但我完全忘記了「=」......現在已經搞亂了1個小時。 謝謝,它現在有效! –

+1

@FranzHutterer:語法檢查類似POSIX的shell代碼的優秀工具是[shellecheck.net](http://shellcheck.net);它會發現你的錯誤。 – mklement0

回答

1

有需要是圍繞=操作空間測試[]

#!/bin/bash 

if [ "$1" = "test" ] 
then if ping -c 5 -i 1 192.168.178.27 
    then echo "Desktop is reachable" 
    else echo "Desktop not (yet) reachable" 
    fi 
else echo "sending magic package" 
    sudo wakeonlan FC:AA:14:E7:CD:95 
fi