Это похоже на ошибку реализации (ошибку) в bash.
Я использовал:
#!/bin/bash -p
echo $LINENO
echo ' ' $LINENO '
' $LINENO '
' $LINENO
echo '' '
' $LINENO
, что привело к:
2
3
3
3
6
Что поддерживает теорию, чтопеременная оценивается до того, как оболочка посчитает, что строка завершена.После завершения строки обновляется LINENO и продолжается.
Проверенные версии Bash: 3.2.48 (mac), 4.1.5 (linux)
Когда я использую синтаксис:
echo '
' $LINENO
он получает более новый номер строки.Похоже, это связано с вычислением пустой строки, представленной в качестве единственного аргумента в строке.