我们知道如何计算变量中的行数。但是,正如那里的评论和答案中所指出的,当涉及到空变量时,语义是古怪的,因为空变量通常被视为与非空、无换行符变量相同:
$ echo -n "" | wc -l
0
$ echo -n "foo" | wc -l
0
$ echo "" | wc -l
1
$ echo "foo" | wc -l
1
不太好,如果您想计算其他命令返回的结果数。
现在,在该问题的一个答案中建议了部分解决方法:
printf "%s" "$a" | grep -c "^"
但这也不完全是我所追求的,因为它会将一个值为换行符的非空变量计为具有 0 行。
我的问题:除了“定期”计数然后明确检查空的情况之外,是否有一种体面的方法可以在 bash 中获得这样的计数?