스크립트의 호스트 명령에 유효한 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보내 not found므로 stdout을 숨길 수 없습니다. 이것이 내가 호스트 명령을 grep -v 'not found'여기에 파이프하는 이유입니다. 존재하는 경우 찾을 수 없음 오류를 숨기고 여전히 1을 종료하여 if 구성이 인쇄되도록 합니다 -. 찾지 못하면 not found0을 종료합니다.

답변2

종료 상태로 충분합니까? $?출력을 무음으로 설정한 경우에도 마지막 명령의 종료 상태인 을 통합할 수 있습니다 . 종료 상태 의 경우 host0은 성공이고 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

관련 정보