期望整数表达式

期望整数表达式

我有以下脚本尝试将 IP 地址与文件中的值进行匹配

#!/usr/bin/env bash

#To find the IP via ping
ping=$(ping federicolivieri.noip.me -c 1)
#To cut the result
ip=$(echo ${ping} | awk '{print $3}' | rev | cut -c2- | rev | cut -c2-)
#dnsdist variable
dnsdist_ip=$(awk 'END{print $1}' /etc/dnsdist/dnsdist.conf | cut -c 19- | rev | cut -c 2- | rev)

if [ "$ip" -eq "$dnsdist_ip" ]; then
   echo "ciao"
   else
   echo "newServer{address="`echo ${ip}`", name="raspi"}" >> /etc/dnsdist/dnsdist.conf
fi

但是,当我运行脚本时出现此错误

root@raspberrypi:/etc/myscripts# ./noip.sh
./noip.sh: line 10: [: 2.31.237.195: integer expression expected

我知道该脚本需要一个整数值,但如您所知,IP 地址为“点”

我该如何解决这个问题?

答案1

正如Archemar 在他的评论中指出的那样,您想用于=字符串比较:

if [ "$ip" = "$dnsdist_ip" ];

-eq运算符用于数值比较,如所解释的这里:

n1-eq n2

如果整数 n1 和 n2 在代数上相等,则为 True;否则为假。

由于 IP 不是整数(它们也包含.),因此您不能使用-eq它们来比较它们。

相关内容