정수 표현식이 필요합니다

정수 표현식이 필요합니다

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

관련 정보