2つのバイナリファイルを比較する機能が必要です。要件は次のとおりです。
- 3つまたは4つではなく2つのファイル
- ファイルが存在すると仮定できません。
- 必要になるまでチェックサム(CRC/MD5/SHA/...)の実行を避けてください。
- 複数のチェックサムを実行している場合は、最も安いものから最も高価なものの順に注文してください(上記の順序)。
- 意味のあるエラーメッセージの印刷
- 使用法:Binary_compare_two_files file1 file2
それが私が得たもので、私の考えではこれよりも良いかもしれないと思います。どのように?
#!/bin/bash
function binary_compare_two_files() {
REQUIRED_ARGUMENTS=2
n_arguments="$#"
if [ ! "${n_arguments}" -eq $REQUIRED_ARGUMENTS ]; then
printf 'Invalid number of arguments. Required: %d, supplied: %d\n' \
$REQUIRED_ARGUMENTS $n_arguments
echo 'usage: binary_compare_two_files file1 file2'
return
fi
file1="${1}"
file2="${2}"
if [ ! -f "${file1}" -o ! -f "${file2}" ]; then
echo 'Invalid arguments. Both arguments need to refer to existing files.'
return
fi
file1_size=$(stat -f "%z" "${file1}")
file2_size=$(stat -f "%z" "${file2}")
if [ ! ${file1_size} -eq ${file2_size} ]; then
return $((file1_size - file2_size))
fi
file1_md5=$(md5 -q "${file1}")
file2_md5=$(md5 -q "${file2}")
if [ ! "${file1_md5}" == "${file2_md5}" ]; then
return -1
fi
return 0
}
私はdiff / bdiffがわからないので、使用しないことを決めたので、stat
まずサイズを確認しました... srcを見てください。
ベストアンサー1
#!/bin/bash
diff -u $1 $2 > /dev/null
if [[ $? -eq 0 ]] ;then
echo "They are equal!"
else
echo "They aren't equal!"
fi;
もちろん、私は議論が自由であるかどうかをテストしていません。自分でテストしてみてください。
それを楽しんでください...