在命令行中,当使用diff比较两个不同的文件后,该命令将会显示:
echo $?
回报“1”。当我尝试在脚本中执行相同操作时,代码如下:
echo "` diff $F1 $F2`"
rv=$?
if [[ $rv == 1 ]]
then
echo "failed"
fi
那么我从来没有打印“failed”(即使是针对不同的文件)。请注意,这是Bash shell,因此语法应该没问题(例如,如果我检查“0”,它总是打印)。
我如何检查diff命令是否发现了差异,并有条件地进行处理?
这是在Ubuntu 12.04下执行的。
cmp
而不是diff
。 - RedXecho $(diff)
返回的退出码是来自于echo
,而不是diff
。 - RedXdiff
命令不会输出不匹配的数量。以下是代码:var=$(diff "$F1" "$F2"); ret=$?; echo "$var"; if (($ret == 0)); then echo "same"; else echo "not same"; fi
- RedXTMPFILE=.tmp.$$; 如果 diff "${F1}" "${F2}" > "${TMPFILE}"; 然后 echo "有 $(wc -l "${TMPFILE}") 处不同;"; cat "${TMPFILE}"; 否则 echo "一样一样的!"; fi ; rm -f "${TMPFILE}"
- Steve Carter