6

cmp file1 file2ファイルが同じ場合は何もしません。では、シェルスクリプトでファイルが同じであることをどのように出力しますか?

4

3 に答える 3

7

ファイルが同一である場合、の終了ステータスcpmはゼロであり、それ以外の場合は非ゼロです。したがって、次のようなものを使用できます

cmp file1 file2 && echo "Files are identical"

終了ステータスを保存したい場合は、代わりに次のようなものを使用できます。

cmp file1 file2
status=$?
if [[ $status = 0 ]]; then
    echo "Files are the same"
else
    echo "Files are different"
fi
于 2014-05-02T13:23:45.027 に答える
2

の終了ステータス コードを使用しますcmp。0 の終了コードは、それらが同じであることを意味します。

$ cmp file1 file2; echo $?
0

スクリプトでは、次のようなことができます。

cmp file1 file2 && echo "same"
于 2014-05-02T13:24:07.690 に答える
0

結果を表示するだけの場合は、次も使用できますdiff -q -s file1 file2

  • -qオプション (AKA --brief) はとdiff同様にcmp機能するため、変更を識別せずに、ファイルが異なるか同一であるかのみをチェックします (注: これと の間にパフォーマンスの違いがあるかどうかはわかりませんcmp)。
  • -sオプション (AKA ) を指定すると、--report-identical-files出力が表示されずに、「ファイル file1 と file2 が同一です」というメッセージが表示されます。ファイルが異なる場合、「ファイル file1 と file2 が異なります」というメッセージがどちらの方法でも表示されます (-qが使用されている場合)。

ソース

于 2021-09-09T15:16:44.937 に答える