假设我有一个名为 checkDuplicateDownload.sh 的文件,通过比较新文件和旧文件来检查下载的文件是否重复。
这就是我所做的。
duplicate=`cmp $prevFile newFile -b`
Run Code Online (Sandbox Code Playgroud)
哪里duplicate
是存储结果的变量cmp
,prevFile
是前一个文件,newFile
是新文件。如果文件相同,则duplicate
值为 0,否则为 1。
怎么做和cmp
上面的命令一样,但是使用awk并将比较结果存储到一个duplicate
变量中?
在我看来,您所描述的是两个文件的无声比较。第一个片段会将退出状态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
呢?它不是这项工作的正确工具,所以不要在这里使用它。