所以我不确定为什么会这样..我知道 ${LINENO} 通常包含脚本中的行,并且 BASH_LINENO 基于 BASH_SOURCE 作为数组的输入
$ (echo hi;declare -p LINENO BASH_LINENO;echo -e "My LINENO\tis\t${LINENO}\nMy BASH_LINENO\tis\t${BASH_LINENO[@]}")
hi
declare -- LINENO="34"
declare -a BASH_LINENO=()
My LINENO is 34
My BASH_LINENO is
但是为什么当我交互工作时 LINENO 会返回 30+,然后每次运行 echo 时都会递增(请注意,当我说交互时,我的意思是这是一个附加了 pty 且 fd 0、1 和 2 的激活 shell那里)。谁能向我解释为什么 LINENO 在多次运行时处于 33、34、35 等位置?
答案1
这是什么重击(1)说(我的粗体):
莱诺
每次引用此参数时,shell 都会替换一个十进制数字,表示脚本或函数中当前的连续行号(从 1 开始)。 当不在脚本或函数中时,不保证替换的值有意义。 如果未设置 LINENO,即使随后重置它,它也会失去其特殊属性。