2014-09-27 56 views
-2

我试图做在bash以下:庆典 - 比较变量

得到我的外部IP

读取文件的第一行

比较这两个值

如果不是同样,删除文件,并重新创建它与当前地址

我真的不知道为什么这会失败,我的脚本所做的是输出我的当前地址和第一个该文件的行(其中的方式简直是“ASD”进行测试)

#!/bin/bash   

IP= curl http://ipecho.net/plain 
OLD= head -n 1 /Users/emse/Downloads/IP/IP.txt 
if [ "$IP" = "$OLD" ]; then 
    exit 
else 
    rm /Users/emse/Downloads/IP/IP.txt 
    $IP> /Users/emse/Downloads/IP/IP.txt 
    exit 
fi 
+0

在http://www.shellcheck.net/ – Cyrus 2014-09-27 07:36:45

回答

5

在脚本中一些明显的问题:

  1. 不要把空间上等号,如果你的任何一方想做分配
  2. 你想要的curl输出,head所以他们包装在反引号(')
  3. 要写$IP入档,不执行它的内容作为一个命令,所以echo

脚本变为:

#!/bin/bash   

IP=`curl http://ipecho.net/plain` 
OLD=`head -n 1 /Users/emse/Downloads/IP/IP.txt` 
if [ "$IP" = "$OLD" ]; then 
    exit 
else 
    rm /Users/emse/Downloads/IP/IP.txt 
    echo $IP > /Users/emse/Downloads/IP/IP.txt 
    exit 
fi 
0

出色答卷清波,只是精致的一点点位:

#!/bin/bash   

IP=`curl http://ipecho.net/plain` 
OLD=`head -n 1 /Users/emse/Downloads/IP/IP.txt` 
if [ "$IP" != "$OLD" ]; then 
    echo $IP > /Users/emse/Downloads/IP/IP.txt # > creates/truncates/replaces IP.txt 
fi 
+0

看看呀清理了很多。此外,文件名可以作为变量:-) – qingbo 2014-09-27 08:06:01