我正在尝试在bash中执行以下操作:
获取我的外部IP
读取文件的第一行
比较两个值
如果不相同,请删除该文件并使用当前地址重新创建
我真的不知道为什么会失败,我的所有脚本都是输出我当前的地址和文件的第一行(顺便说一下,#34; 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 :(得分:4)
您的脚本中存在一些明显的问题:
curl
,head
的输出,所以将它们包装在反引号中(`)$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
答案 1 :(得分:0)
优秀的答案qingbo,只是一点点改进:
#!/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