명령 대체 결과를 다음과 같은 문자열과 비교하려고 합니다.
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 ...