bash: 你如何打印 diff 命令输出?
bash: how do you print diff command output?
我想将 diff 用作 if 语句条件,但也将 diff 输出到标准输出。但是,当我将 diff 作为条件时,它不会 运行 command/show 输出:
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
例如。我知道我可以在 if 语句 then
中编写命令 diff -rq dir1 dir2
但是有更好的方法吗?
您正在将文字字符串 "diff -rq dir1 dir2" 与文字字符串“”进行比较。显然这些不匹配,您的 if
条件已满足,并且您的 echo 运行。
为了完成你想要的,利用 diff
returns 非零当且仅当文件不同的事实:
if ! diff -rq dir1 dir2; then
echo "they differ"
exit 5
fi
不要费心比较 diff
的输出是否为空:那不是 UNIX 方式。
我想将 diff 用作 if 语句条件,但也将 diff 输出到标准输出。但是,当我将 diff 作为条件时,它不会 运行 command/show 输出:
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
例如。我知道我可以在 if 语句 then
中编写命令 diff -rq dir1 dir2
但是有更好的方法吗?
您正在将文字字符串 "diff -rq dir1 dir2" 与文字字符串“”进行比较。显然这些不匹配,您的 if
条件已满足,并且您的 echo 运行。
为了完成你想要的,利用 diff
returns 非零当且仅当文件不同的事实:
if ! diff -rq dir1 dir2; then
echo "they differ"
exit 5
fi
不要费心比较 diff
的输出是否为空:那不是 UNIX 方式。