いくつかのコマンドを連続して実行する非常にシンプルな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/