2013-03-16 2 views
1

나는 bash 스크립트의 핑으로부터 성공하고 실패한 응답을 얻으 려하지만 지금까지는 성공할 수 없습니다.Bash 스크립팅은 모든 출력을 명령에서 변수로 할당합니다.

내 코드는 ... 다음과 같습니다

ping_results=$(ping -c 4 -q google.com) 

ping이 성공하면이 작동하지만 인터넷 연결이되지 않는 경우에 나는 결과를 얻을

ping: unknown host google.com 

그것을 콘솔에 인쇄되고 스크립트가 종료 된 것처럼 보입니다.

ping 결과 또는 오류를 ping_results 변수에 저장하려고합니다.

도움이 될 것입니다.

+0

왜냐하면 오류는'stderr'로 가서'2 &> 1'과 같은 것을 사용하기 때문입니다. stdout으로 출력하지 마십시오. –

답변

6

자, 질문에 대한 간단한 대답은 stderr를 stdout으로 리디렉션하는 것입니다. 프레디크 필이 언급 한 내용을

대신 :

ping_results=$(ping -c 4 -q google.com); 

사용 :

ping_results=$(ping -c 4 -q google.com 2>&1); 

또는 비슷한 ...

그러나, 당신이 무슨 일을하는지에 따라,이 경우 테스트 더 좋을 수도 ping 명령의 종료 코드는 1 (ping이 오류로 종료됨을 나타냄) 또는 0 (ping이 성공적임을 나타냄)입니다. 종료 코드는 "$?"변수에 저장됩니다.

관련 문제