if 문의 명령 대체

if 문의 명령 대체

명령 대체 결과를 다음과 같은 문자열과 비교하려고 합니다.

if [$(ping $1)=="ping: unknown host localhosts"]
then
  echo "no";
else
  echo "yes";
fi

내가 여기서 뭘 잘못하고 있는 걸까?

답변1

첫째, 공백과 따옴표를 잊어버렸습니다. 다음은 오류이므로 stderr을 캡쳐해야 합니다. localhosts아마 결국 $1.

if [ "$(ping -c1 "$1" 2>&1)" = "ping: unknown host $1" ]

ping메시지는 지역에 따라 다를 수 있습니다. 호스트의 이름 확인만 테스트하려는 경우에는 ping이 도구가 적합한 도구가 아닙니다 . 이 시도:

if getent hosts "$1" > /dev/null; then ...

관련 정보