我试图统计冲突中的一些文件:
let initialConflicts=`git diff --name-only --diff-filter=U | wc -l`
问题是:如果没有冲突,则git diff
的结果为空,wc -l
挂起。它似乎来自git diff
或wc -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`
应该起作用。