diff -q file_1 File_2 || echo "success" && diff -q file_3 File_4 || echo "success"
使用了这个命令,但这不是我需要的正确逻辑,必须编辑一些方法。
这里file_1
File_2
和 file_3 File_4 不同,echo 将执行两次,应该只执行一次,而且如果文件 file_1 File_2 或 file_3 File_4 不同,那么也echo "success"
应该只执行一次。
答案1
如果您坚持进行短路评估,请使用命令分组{}
:
{ diff -q f1 f2 && diff -q f3 f4 ;} && echo 'Matched' || echo 'Different'
子 shell()
也可以:
( diff -q f1 f2 && diff -q f3 f4 ) && echo 'Matched' || echo 'Different'
如果您不想要 的diff
输出:
{ diff -q f1 f2 && diff -q f3 f4 ;} >/dev/null && echo 'Matched' || echo 'Different'
( diff -q f1 f2 && diff -q f3 f4 ) >/dev/null && echo 'Matched' || echo 'Different'
您最好将其放入if
构造中以使其更清晰,这将使您可以轻松识别文件:
if diff -q f1 f2 >/dev/null; then
if diff -q f3 f4 >/dev/null; then
echo 'All Matched'
else
echo 'f3 and f4 are Different'
fi
else
echo 'f1 and f2 Different'
fi