if语句中的Diff条件 - 如何使其成立?

时间:2016-11-07 22:44:22

标签: bash if-statement diff

我有

diff <file1> <file2>不返回任何内容

我希望它在条件内,当diff返回任何内容时,这是真的。我试过几种方式,但是我一直在执行其他命令。

2 个答案:

答案 0 :(得分:2)

如果要检查两个文件是否相等,可以检查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工具都有一个退出代码,检查它的速度通常更快,更容易,更健壮,而不是以基于文本的方式捕获和比较它们的输出。

答案 1 :(得分:0)

您可以使用逻辑管道:

对于一个命令:

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"
}