diff
コマンドの出力(この場合)をファイルにリダイレクトしたいが、比較するファイルに違いがある場合にのみ可能です。たとえば、、、、a
3b
つのファイルがあるとします。c
ここで、a
とb
は同じですが、a
そうc
ではありません。
diff a c > output.txt
これにより、diff a b > output.txt
違いがあるかどうかにかかわらずoutput.txt
生成されます。output.txt
違いがある場合にのみ生成したいです(たとえば、差が1を返します)。
私は似たようなことをしたい:
if ! diff a c > /dev/null; then
diff a c > output.txt
fi
ただし、コマンドを2回実行する必要はありません。私できる次のようにコマンドの内容を保存します。
res=$(diff a c)
if [ $? != 0 ]; then
echo "$res" > output.txt
fi
しかし、私はecho
「仲介者」として介入し、いくつかの問題を引き起こす可能性があります。コードを複製せずに出力がある場合にのみ、出力をリダイレクト/ファイル生成する方法は?
ベストアンサー1
コマンドを一度呼び出して出力をリダイレクトし、違いを作成せずに出力を削除できます。
diff a c > output.txt && rm output.txt