if 语句条件内部的差异 - 如何使其变为真?

Diff inside if-statement condition - how to make it true?

我有

diff <file1> <file2> returns 没什么

我想要它在 diff returns 什么都没有的情况下为真。我尝试了几种方法,但一直执行其他命令。

如果要检查两个文件是否相等,可以检查diff -q(或cmp)的退出代码。这更快,因为它不需要找到确切的差异:

if diff -q file1 file2 > /dev/null
then
  echo "The files are equal"
else
  echo "The files are different or inaccessible"
fi

所有 Unix 工具都有一个退出代码,检查它通常比以基于文本的方式捕获和比较它们的输出更快、更容易和更可靠。

可以使用逻辑管道:

对于一个命令:

diff -q file1 file2 > /dev/null && echo "The files are equal"

或更多命令:

diff -q file1 file2 > /dev/null && {
    echo "The files are equal"; echo "Other command"
    echo "More other command"
}