我想使用 bash 中的 cmp 命令比较三个文本文件,如果 file1 与 file2 不同,但 file1 和 file3 完全相同,则执行操作。根据帮助文件,如果文件相同,则 cmp 输出 0;如果文件不同,则 cmp 输出 1,我尝试过:
if [ "cmp -s file1.txt file2.txt" != 0 ] && [ "cmp -s file1.txt file3.txt" == 0 ]; then
#Action
else
#Do nothing
fi
但是,部分条件
if [ "cmp -s file1.txt file2.txt" != 0 ]
甚至不能用作单个 if 条件,第二个条件也不能,因为如果两个文件相同或不同,它们的行为方式相同。我究竟做错了什么?
答案1
您正在将文字文本cmp -s file1.txt file2.txt
与字符串进行比较0
,而字符串永远不会匹配。用这个代替,
if ! cmp -s file1.txt file2.txt && cmp -s file1.txt file3.txt
then
#Action
fi