cmpの代わりにawkを使用して比較結果を変数に保存する方法

cmpの代わりにawkを使用して比較結果を変数に保存する方法

新しいファイルと古いファイルを比較して、ダウンロードしたファイルが重複していることを確認するcheckDuplicateDownload.shというファイルがあるとします。

これが私がすることです。

duplicate=`cmp $prevFile newFile -b`

duplicate結果を格納する変数cmpprevFileは古いファイル、newFileは新しいファイルです。ファイルが同じ場合、値は0 duplicate、それ以外の場合は1です。

上記のコマンドと同じことをcmp行いますが、awkを使用して比較をduplicate変数に保存するにはどうすればよいですか?

ベストアンサー1

あなたが説明するのは、2つのファイルを自動的に比較するようです。最初のコードスニペットは終了ステータスをcmp変数に入れますduplicate(0 = match、そうでない場合は問題があります。man cmp終了ステータス値の詳細についてはこちらを参照)。

cmp -s prevFile newFile
duplicate=$?

しかし、次にやりたいことは、その価値をテストし$duplicateてそれに取り組むことです。この場合、終了cmp値を直接テストすることもできます。

if cmp -s prevFile newFile
then
    echo "Files match"
else
    echo "Files do not match (or one is missing, unreadable, etc.)"
fi

変数を使用する場合は、変数を使用するときに二重引用符で囲む必要があることを忘れないでください。

cmp -s "$prevFile" "$newFile"

$prevFileまた、まだ存在しないことが可能かどうかを検討してください。

最後に、どうですかawk?作業に適したツールではないので、ここでは使用しないでください。

おすすめ記事