如果没有差异,计算差异会使脚本退出



我试图统计冲突中的一些文件:

let initialConflicts=`git diff --name-only --diff-filter=U | wc -l`

问题是:如果没有冲突,则git diff的结果为空,wc -l挂起。它似乎来自git diffwc -l中缺失的选项。这个小脚本再现了问题:

set -euo pipefail
IFS=$'nt'
echo $SHELL
echo "Before counting"
let test=`echo -n "" | wc -l`
echo "After counting"

在这里;在计数"之后;不会出现。

参见bash的手册页中的let

每个arg都是要求值的算术表达式。。。如果最后一个arg的计算结果为0,则让返回1;否则返回0。

由于您有set -e,这将导致脚本退出。由于您不是在这里评估表达式,所以只需:

test=`echo -n "" | wc -l`

应该起作用。

最新更新