2

对不起 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 之前没有得到它的结果,我不知道足够的 UNIX 来调试。任何帮助都会很棒。

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

4

1 回答 1

1

修复它的两种方法:

  1. 使用 /bin/bash (如果可能的话)
  2. 使用“=”而不是“==”进行比较

这个SO问题提供了更多信息/背景[:shell编程中的意外运算符

于 2012-05-16T18:56:22.600 回答