2015-10-06 25 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