考虑:
#!/bin/bash
echo
'$ LINENO
echo '''
'$ LINENO
第一个回显正确打印为4,但是第二个回显打印为5而不是6。我是否缺少某些东西,或者这是一个错误? (使用bash 3.00.15)
最佳答案
它看起来像是bash中的一个实现不当的功能(错误)。
我用了:
#!/bin/bash -p
echo $LINENO
echo ' ' $LINENO '
' $LINENO '
' $LINENO
echo '' '
' $LINENO
产生了:
2
3
3
3
6
这支持在 shell 认为线已完成之前对变量进行求值的理论。该行完成后,将更新LINENO并继续。
测试的Bash版本:3.2.48(mac),4.1.5(linux)
当我使用语法时:
echo '
' $LINENO
它获取较新的行号。它似乎与对作为唯一参数的空字符串的评估有关。