스크립트의 호스트 명령이 유효한 IP를 얻었는지 어떻게 확인할 수 있습니까?

스크립트의 호스트 명령이 유효한 IP를 얻었는지 어떻게 확인할 수 있습니까?

매개변수가 1개만 있다고 가정해 보겠습니다.

host $1

위 명령이 응답을 제공하는지 어떻게 확인할 수 있습니까?

Host $1 not found (NXDOMAIN) 

찾을 수 없음 오류를 표시하고 싶지 않고 그냥 표시하고 싶습니다.-

답변1

host입력을 구문 분석할 수 없으면 1이 종료되므로 if 구성을 사용할 수 있습니다.

if ! host "$1" | grep -v 'not found'; then
  printf '%s\n' '-'
fi

명령이 실패하는지 테스트하는 데 이것을 사용합니다 !(명령이 통과하면 출력을 정상적으로 인쇄하기를 원한다고 가정하기 때문입니다). stderr 대신 stdout에 오류를 host보내면 stdout을 숨길 수 없습니다. not found이것이 바로 호스트 명령을 grep -v 'not found'여기에 파이프하는 이유이며, 찾을 수 없는 오류가 있고 여전히 1로 종료되면 오류를 숨겨 if 구성이 print 가 되도록 합니다 -. 찾지 못하면 not found0으로 종료됩니다.

답변2

종료 상태가 충분합니까? $?출력을 무음으로 설정하더라도 이전 명령의 종료 상태를 병합할 수 있습니다. host종료 상태 의 경우 0은 성공을 의미하고 1은 오류를 의미합니다.

[17:54] [ws ~] $ host 127.0.0.112 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
1
[17:54] [ws ~] $ host 127.0.0.1 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
0

관련 정보