bash - 比较变量

时间:2014-09-27 07:35:47

标签: bash

我正在尝试在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

2 个答案:

答案 0 :(得分:4)

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

  1. 如果你想做作业,不要在等号的两边放置空格
  2. 你想要curlhead的输出,所以将它们包装在反引号中(`)
  3. 您想将$IP写入文件,而不是将其作为命令执行,因此echo
  4. 脚本变为:

    #!/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