LINENOとBASH_LINENO

LINENOとBASH_LINENO

それで、なぜこれが起こるのかわかりません。 ${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を実行するたびに増加するのはなぜですか? LINENOが何度も実行したときに33、34、35などの理由を説明できる人はいますか?

答え1

これは何ですか?大きな打撃(1)言う(太字で):

レノ

    このパラメータが引用されるたびに、シェルはそれをスクリプトまたは関数の現在の連続行番号(1から始まる)を表す10進数に置き換えます。 スクリプトや関数の内部にない場合は、置き換えられた値が意味があることは保証されません。 LINENOを設定しないと、後でリセットしても特殊属性が失われます。

関連情報