简单的Unix语句不起作用

时间:2012-05-16 18:33:17

标签: unix if-statement

抱歉UNIX新手。我有一个在我的NAS上运行的脚本,它只是检查我的IP是什么,并运行一个脚本来重新连接VPN它是否已经改变。

注意:我已将下面IP中的前四个数字更改为“x”,对于此示例,我知道它们需要反映我的真实IP地址。

#!/bin/sh
YOUR_IP="$(w3m -dump http://checkip.dyndns.org)"

echo "Current ip:" "$YOUR_IP"
if [ "$YOUR_IP" == "Current IP Address: XX.XX.148.73" ]
then
        echo "UP VPN is active :)"
else
        echo "DOWN VPN is disconnect :("
        sh /opt/etc/init.d/S20openvpn restart
fi

echo "$(date +"%d / %m / %Y")"
echo "$(date +"%H : %M : %S")"
echo "------------------------"
exit

任何人都可以告诉我为什么if else声明没有运行。在我的日志中,我得到了以下内容。我猜这个陈述必须是错误的,否则它会回应一些东西,而目前它并没有。它可能只是一个语法错误,或者w3m -dump在if else运行之前没有得到结果put我不知道足够的UNIX来调试。任何帮助都会很棒。

Current ip: Current IP Address: XX.XX.148.73
16 / 05 / 2012
18 : 50 : 01

1 个答案:

答案 0 :(得分:1)

两种解决方法:

  1. 使用/ bin / bash(如果可能的话)
  2. 使用“=”而不是“==”进行比较
  3. 此SO问题提供了更多信息/背景[ :Unexpected operator in shell programming