-s
パラメータを設定すると、diff
も異なるファイルを出力します。
diff -s $FIRST_FILE $SECOND_FILE
考えられる解決策の1つは次のとおりです。
diff -s $FIRST_FILE $SECOND_FILE > /dev/null
if [ $? -eq 0 ]; then
echo "The files are identical"
fi
注:質問のテキストが変更されました。
Unixの哲学は、ジョブごとに1つのツールを用意し、シェルでそれらを結合することです。つまり、比較する1つのツールと、目的の出力形式を取得する1つのツールです。
この場合、出力形式は非常に単純なので、この部分をシェルで直接実行できます。
2つのファイルを比較するために、それらが同じ内容であるかどうかだけに関心があり、違いをリストすることに関心がない場合は、 cmp
を使用します。
if cmp -s -- "$FIRST_FILE" "$SECOND_FILE"; then
printf '%s\n' "$FIRST_FILE = $SECOND_FILE"
fi
デフォルトでは、diff
は同一のファイルが指定された場合は何も表示しません。これが、-s
が変更する動作の唯一の側面です。したがって、常にファイルを比較し、違いを出力します。 -s
を使用すると、ファイルが同一の場合にもメッセージが出力されます。-s
を使用しない場合は、同一のファイルについてはまったく言及されません。
-q
と-s
を組み合わせることで、私が探していると思う動作を得ることができます。 -q
はdiff
に、ファイルが異なる場合(異なる場合)のみを示し、違いを詳しく説明しないように指示します。
次に例を示します。
$ echo 1 > a
$ echo 2 > b
$ echo 2 > c
$ diff -qs a b
Files a and b differ
$ diff -qs b c
Files b and c are identical
ファイル名を引用符で囲みました。ファイル名も小文字に変更する必要があります。
diff "${FIRST_FILE}" "${SECOND_FILE}" > /dev/null && echo "Same"