コマンドを実行して独自のスクリプトを使用して出力を操作していますが、スクリプトが失敗してもデフォルトのコマンドを停止したくありません。
たとえば、
a-command | tee logfile.txt | myscript
私のスクリプトが途中で失敗した場合はlogfile.txtを見て、私のスクリプトが動作を停止した場所で中断されることを確認してください。しかし、私が望むのは、aコマンドが実行され続け、logfile.txtに完全なログがあることです。スクリプトをデバッグしてエラーを修正できます。
最初の2つの部分(コマンドとティー)がそのタスクを実行するように最後のパイプ部分をオプションとして処理するか、エラーが無視されるようにコマンドを変更するにはどうすればよいですか?
【編集】a-command
長い作業です。私のスクリプトは、デフォルトでより良いレポート状態のためにコマンドが実行されている間に出力を操作します。だからa-command
作業を終えたら、スクリプトを実行したくありません。
ベストアンサー1
a-command | tee logfile.txt | { myscript; cat >/dev/null; }
myscript
その後、何らかの理由で終了するまで、通常どおりパイプラインが最初に実行されます。この時点では、データが到着しなくなるまでcat
読み取り操作が続きますtee
。読み取ったデータはcat
パイプで接続されて削除されます/dev/null
。
最初に終了/失敗せずに完了すると、もはやa-command
データを読み取ることができず、終了(?)される可能性があります。シャットダウン時に開始されますが、読み取るデータがないため、すぐにシャットダウンしてパイプが完了します。myscript
myscript
myscript
cat
ツーティのトラブルシューティングコメントパイプの正しい終了ステータスが引き続き表示されることを確認してください。
a-command | tee logfile.txt | ( myscript; err=$?; cat >/dev/null; exit "$err" )