Bash bug重新$ LINENO--或者我只是困惑?

Wil*_*ell 7 bash shell sh

考虑:

#!/bin/bash

echo '
' $LINENO
echo '' '
'  $LINENO

第一个回声正确打印4,但第二个回显打印5而不是6.我错过了什么,或者这是一个错误?(使用bash 3.00.15)

Pet*_*esh 5

它看起来像bash中的一个实现不当(错误)。

我用了:

#!/bin/bash -p
echo $LINENO
echo ' ' $LINENO '
' $LINENO '
' $LINENO
echo '' '
'  $LINENO
Run Code Online (Sandbox Code Playgroud)

产生了:

2
  3 
 3 
 3

 6
Run Code Online (Sandbox Code Playgroud)

它支持在外壳认为线已完成之前先评估变量的理论。该行完成后,将更新LINENO并继续。

测试的Bash版本:3.2.48(mac),4.1.5(linux)

当我使用语法时:

echo '
' $LINENO
Run Code Online (Sandbox Code Playgroud)

它获取较新的行号。它似乎与对作为唯一参数的空字符串的评估有关。