如何在shell脚本中禁止diff命令的所有输出?

35

您好,

我想知道是否有一种方法可以抑制diff命令的所有输出,以便它不会输出差异,而是仅返回成功状态?

diff $FILE1 $FILE2
if [ $? -ne 0 ];then
    echo Does not match output.
else
    echo Match.
3个回答

63

如果你只想知道两个文件是否不同,cmp是更好的工具。

if cmp -s file1 file2; then
   echo Files not changed.
fi

4
这句话的翻译是:"这应该是 echo Files not changed.,对吗?" - Maros
@Maros Hluska。已更新。 - Mark C
3
看起来 cmp 不支持 diff 的大多数功能,例如忽略空格。因此并不是一个真正的替代品。 - Kashyap

17
diff $FILE1 $FILE2 &>/dev/null

3
谢谢,diff命令有一些cmp命令没有的选项(例如-w)。 - Toni Homedes i Saun

0
我想要diff的递归功能,所以选择了:
if [[ "$(diff -rq DIR1 DIR2 | head -n1)" ]]; then
   echo "Directory Contents Differ"
else
   echo "Directory Contents Same"
fi

因为在差异输出的第一行之后,头部将会挂起在diff上,这应该会导致diff提前停止(不需要测试其他任何内容)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接