代码之家  ›  专栏  ›  技术社区  ›  book

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

  •  -1
  • book  · 技术社区  · 6 年前

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

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

    我想让它在两个目录有差异时输出差异,但这不会打印出差异,只是输出 there are differences .

    如果我跑步 diff -rq dir1 dir2 外部 if条件的,它将打印出来 Only in dir1: xyz.txt 例如我知道我能写命令 差异-rq dir1 dir2 在if语句中 then 但是有没有更好的方法呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   bishop    6 年前

    您正在将文本字符串“diff-rq dir1 dir2”与文本字符串“”进行比较。显然,这些不匹配 if 条件满足,您的echo运行。

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

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

    不必费心比较 差异 是否清空:这不是UNIX的方式。