몇 가지 명령이 연속적으로 실행되는 매우 간단한 bash 스크립트가 있습니다. 각 명령의 출력은 자체 로그 파일로 리디렉션됩니다. 이 같은
(command --param a > sys.a.log 2>&1)
(command --param b > sys.b.log 2>&1)
(command --param c > sys.c.log 2>&1)
이제 이 스크립트를 실행하면 완벽하게 시작되지만 첫 번째 명령이 완료되면(로그 파일에는 실행된 프로그램의 마지막 줄이 표시됨) 프로세스가 종료되지 않습니다. 스크립트가 다음 줄로 이동하기 전에(그리고 sys.b.log를 생성하기 전에) 수동으로 종료해야 합니다.
이것이 이 스크립트의 동작을 예상하는 방식입니까(저는 bash에 대해 잘 모릅니다). 아니면 예상치 못한 동작입니까? 문제를 다른 곳에서 찾아야 합니까? 중요한 경우 실제 명령은 여러 매개변수가 포함된 "java"입니다.
답변1
Bash 스크립트에서 종료 트랩을 사용하는 것이 좋습니다.
일부 스니펫:http://redsymbol.net/articles/bash-exit-traps/
또한 강력한 쉘 스크립트 작성 및 주의할 사항에 대한 이 게시물을 확인하세요.http://www.davidpashley.com/articles/writing-robust-shell-scripts/