2013-05-20 3 views
0

결과를 얻고 결과에 따라 명령을 실행하는 bash 스크립트가 있습니다. 이 스크립트에 문제가 없는지bash 스크립트에서 kill 명령 결과를 가져 오는 방법

#!/bin/bash 
commandResult=$(($myCommand) 2>&1) 
if [[ "$commandResult" == *Error* ]]; then 
    x="failed" 
else 
    x="success" 
fi 
echo $x 
exit 0; 

, 문제는 내가 명령 줄에 kill -9 $myCommand을 통해 스크립트를 실행의 중간에 $myCommand을 죽이려 할 때 $commandResult는 "null이 될 및 것입니다 : 여기에 스크립트입니다 성공 "이 인쇄됩니다.

$commandResult에 죽이는 결과를 넣거나이 스크립트에서 프로세스가 죽었는지 확인하려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

답변

1

표준 출력으로가 아니라 명령의 종료 코드를 확인해야합니다. myCommand은 성공시 0으로 종료해야하고 실패하면 0이 아닌 코드가 있어야합니다. kill 명령으로 죽인 경우, 종료 코드는 자동으로 128 + n이되며, 여기서 n은 죽이기 위해 사용 된 신호입니다. 그런 다음 성공을 테스트 할 수 있습니다.

if myCommand; then 
    echo success 
    exit 0 
else 
    status=$? 
    echo failure 
    exit $status 
fi 

또한 don't need to use kill -9입니다. kill으로 시작하십시오 (보다 부드러운 신호를 보내십시오). 그래도 문제가 해결되지 않으면 kill -2 (INT, Ctrl-C와 동일)까지 올라간다.

관련 문제