스크립트가 종료하지 않고 실행 완료되었는지 확인


1

나는 수정할 수없는 스크립트로 작업하고 있는데, 종료 코드는 사용하지 않습니다. (모든 출구는 단순히 '출구'입니다)

스크립트를 수정하지 않고 (또는 스크립트를 작성한 바보에게 소리 치지 않고), 스크립트의 어느 시점 이전에 스크립트를 종료하지 않고 스크립트가 "끝났습니다"라는 것을 확인할 수있는 방법이 있습니까?

내가 생각할 수있는 유일한 것은 그것이 끝날 때까지 어떻게 든 활성 프로세스를 추적하는 것이지만 오류로 인해 종료 될 때 종료 될 수도 있습니다.


bash -x scriptname 스크립트가하는 모든 것을 보여줍니다. 출력의 마지막 몇 줄을 보면 원하는 곳에서 빠져 나왔는지 알 수 있습니다.
John1024

흥미로운 솔루션 - 모든 x 출력을 파일로 파이프하는 방법이있어서 사용자가 화면을 혼란스럽게하지 않고 실행 후 파일을 삭제할 수 있습니까?
Brydon Gibson

화면이 혼란스럽지 않게하려면 bash -x scriptname | tail -n5 마지막 5 줄만 표시합니다.
John1024

이것은 -x를 사용하여 생성 된 출력이 아니라 스크립트 출력 만 파이프합니다. 편집 : -x 2 & gt;를 사용하여 stderr로 보냅니다. 로그 파일이 작동하고 답변을 게시하려고합니다.
Brydon Gibson

답변:


1

나는 수정할 수없는 스크립트로 작업하고 있는데, 종료 코드는 사용하지 않습니다.

오류가 있으면 해당 파일의 마지막 줄에 'exit'가 있어야합니다. 그렇지 않으면 스크립트가 성공적으로 실행을 마칩니다.

이 코드는 명령이 실패하면 코드 1로 종료하고 성공하면 코드 0으로 종료합니다.

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit

tail -n1 마지막 행만 표시하고 grep -vq exit 해당 줄에 단어가 포함되었는지 여부를 테스트합니다. exit.

이 디스플레이에 유용한 메시지를 표시하는 방법의 예는 다음과 같습니다.

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit && echo Success

또는:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit || echo Fail
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.