Bash脚本:意外令牌附近的语法错误`else'

时间:2015-04-24 09:53:23

标签: bash syntax-error

我试图创建简单的脚本来检查我的外部IP地址是否已更改。但是,我一直收到以下错误:

  

意外令牌附近的语法错误`else'

这是我的代码:

#!/bin/bash
DESTDIR=exip.txt
PREVIP=$(<$DESTDIR)
EXIP=$(dig +short myip.opendns.com @resolver1.opendns.com)
echo "External ip checker schript V1.0"
echo
echo
echo "Previous ip: $PREVIP"
echo
echo "Your current  external ip is $EXIP"
if [ "$PREVIP" == "$EXIP"]:then
 echo "Both IP-adresses are the same"
else
 echo "The IP addresses are diffrent"
 echo "Sending autoremote message.."
 curl "http://autoremotejoaomgcd.appspot.com/sendmessage?key=APA91bEAg6VebS03KS$
 echo "$EXIP" > "$DESTDIR"
fi

我已经查看了有关此错误的其他主题,但我无法弄清楚。

1 个答案:

答案 0 :(得分:2)

错误在于:

if [ "$PREVIP" == "$EXIP"]:then
                         ^^

您需要在[]周围添加空格,最后使用分号:

if [ "$PREVIP" == "$EXIP" ]; then
                         ^^^

更一般地说,您始终可以使用名为Shellcheck的工具来检查脚本是否存在这些常见错误。它既是命令又是网站,因此您可以将脚本粘贴到http://www.shellcheck.net/