如何使用 awk 而不是 cmp 将比较结果存储到变量

0 bash awk

假设我有一个名为 checkDuplicateDownload.sh 的文件,通过比较新文件和旧文件来检查下载的文件是否重复。

这就是我所做的。

duplicate=`cmp $prevFile newFile -b`
Run Code Online (Sandbox Code Playgroud)

哪里duplicate是存储结果的变量cmpprevFile是前一个文件,newFile是新文件。如果文件相同,则duplicate值为 0,否则为 1。

怎么做和cmp上面的命令一样,但是使用awk并将比较结果存储到一个duplicate变量中?

roa*_*ima 5

在我看来,您所描述的是两个文件的无声比较。第一个片段会将退出状态cmp放入变量中duplicate(0=匹配,否则会出现问题;man cmp有关退出状态值的详细信息,请参阅)

cmp -s prevFile newFile
duplicate=$?
Run Code Online (Sandbox Code Playgroud)

但我怀疑你接下来要做的是测试它的价值$duplicate并对其执行操作。在这种情况下,你不妨cmp直接测试退出值

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

如果您打算使用变量,请不要忘记在使用它们时双引号,即

cmp -s "$prevFile" "$newFile"
Run Code Online (Sandbox Code Playgroud)

还要考虑是否有$prevFile可能还不存在

最后awk呢?它不是这项工作的正确工具,所以不要在这里使用它。