関数内での $LINENO の値
関数の中で $LINENO の値を参照したときの値が他のシェルと異なる。入力がスクリプトファイルでないとき、関数の中では、この変数の値は関数の中身における現在の行数とならなければならない。
調べてみると、シェルによって「関数内」と見なすか「スクリプト内」と見なすか (あるいは「それ以外」と見なすか) の差が激しいようだ。(そもそも $LINENO をサポートしないシェルもある)
Yash では、ksh に倣って以下のように動作することとする。
{ \ func () { echo $LINENO # 4 } }
r2009 (と r2010) で対応。
関数の中で $LINENO の値を参照したときの値が他のシェルと異なる。入力がスクリプトファイルでないとき、関数の中では、この変数の値は関数の中身における現在の行数とならなければならない。