2014-09-27 55 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