매개변수가 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 found
0을 종료합니다.
답변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