それで、なぜこれが起こるのかわかりません。 ${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を設定しないと、後でリセットしても特殊属性が失われます。