bash:你如何打印diff命令输出?

时间:2018-01-11 01:51:51

标签: bash diff

我想将diff用作if语句条件,但也将diff输出到stdout。但是,当我将diff作为条件时,它不会运行命令/显示输出:

if [ "diff -rq dir1 dir2" != "" ]
then
    echo "there are differences"
    exit 5
fi

我希望在两个目录存在差异时输出差异,但这不会打印差异,只输出there are differences

如果我在if条件之外运行<{1}} ,它将打印出diff -rq dir1 dir2例如。我知道我可以在if语句Only in dir1: xyz.txt中编写命令diff -rq dir1 dir2但是有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您正在比较文字字符串&#34; diff -rq dir1 dir2&#34;到文字字符串&#34;&#34;。显然这些不匹配,您的if条件得到满足,并且您的回声运行。

要实现您的目标,请利用diff当且仅当文件不同时才返回非零的事实:

if ! diff -rq dir1 dir2; then
    echo "they differ"
    exit 5
fi

不要将diff的输出比较为空或不是:那不是UNIX方式。