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