2つのアーカイブ(jarファイル)を2つのディレクトリに展開し、2つのフォルダを比較するbashスクリプトがあります。違いをファイルにパイプしたいので、bashファイルでこれを行います。
diff -r $originalJarExtracted $assembledJarExtracted >target/$diffList
これが動作している間、スクリプトも停止し、それ以降のすべてのエントリは実行されません。出力をファイルにパイプし、スクリプトが引き続き実行されるようにdiffを取得するにはどうすればよいですか? diffの情報とマニュアルページを見ましたが、うまくいきませんでした。ところで、私はMacでスクリプトを実行しています。
ちなみに、スクリプトは次のようになります。羽ハブから
ベストアンサー1
推測:スクリプトはset -e
(同義語set -o errexit
:)で実行されています。これにより、コマンドがゼロ以外の状態(通常は失敗を示す)を返すと、シェルは終了します。そうであれば、違いが見つかるとステータス1が返され、違いが見つかるとdiff
終了します。diff
これが問題の場合は、行を次に変更します。
diff -r "$originalJarExtracted" "$assembledJarExtracted" >"target/$diffList" ||
[ $? -eq 1 ]
diff
これにより、スクリプトは0(差分なし)または1(差分)以外の状態が返された場合、つまりファイルの欠落などのエラーがある場合にのみ終了します。