매개변수가 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 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