-s
パラメータを設定すると、diff
他のファイルも印刷されます。
diff -s $FIRST_FILE $SECOND_FILE
答え1
Unixの哲学は、すべてのタスクにツールがあり、シェルがすべてのタスクを1つにまとめるということです。したがって、比較ツール、目的の出力形式を取得するためのツールです。
この場合、出力形式は非常に簡単で、この部分はシェルを使用して直接実行できます。
2つのファイルを比較するには、違いをリストするのではなく、同じ内容があるかどうかに興味がある場合は、次のようにします。cmp
。
if cmp -s -- "$FIRST_FILE" "$SECOND_FILE"; then
printf '%s\n' "$FIRST_FILE = $SECOND_FILE"
fi
答え2
考えられる解決策の1つは次のとおりです。
diff -s $FIRST_FILE $SECOND_FILE > /dev/null
if [ $? -eq 0 ]; then
echo "The files are identical"
fi
注:質問テキストが変更されます。
答え3
デフォルトdiff
では、同じファイルが提供されている場合はサイレントを維持します。これが変更される動作の唯一の側面です-s
。したがって、常にファイルを比較し、違いを出力します。ファイルが同じ場合は、同じファイルをまったく言及せずに-s
メッセージも出力します。-s
-q
sumsを組み合わせると、希望の動作が得られます-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
答え4
ファイル名の周りに引用符を入れました。ファイル名も小文字に変更する必要があります。
diff "${FIRST_FILE}" "${SECOND_FILE}" > /dev/null && echo "Same"