我有以下脚本尝试将 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
它们来比较它们。