整数式が必要です

整数式が必要です

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 が代数的に等しい場合は真、そうでなければ偽です。

IPは整数(含まれていない)なので、それを比較するために.使用することはできません。-eq

おすすめ記事