Bourne シェルスクリプトから行番号を取得する

Bourne シェルスクリプトから行番号を取得する

シェルスクリプトから現在の行番号を印刷したいです。$LINENOBashシェルの変数について知っていますが、Bourneシェルには存在しないようです。行番号を取得する他の変数や方法はありますか?

ベストアンサー1

LINENOkshの機能で、bashとzshにもあります。 Bourneシェル、POSIX仕様、またはダッシュにはそのような機能はありません。行番号が必要な場合は、その機能を備えたシェルでスクリプトが実行されていることを確認してください。ほとんどのシステムはbashまたはkshを提供します。

if [ -z "$LINENO" ]; then
  if type ksh >/dev/null 2>/dev/null; then
    exec ksh "$0" "$@"
  elif type bash >/dev/null 2>/dev/null; then
    exec ksh "$0" "$@"
  else
     echo 1>&2 "$0: Fatal error: unable to find a shell that supports LINENO."
     exit 100
  fi
fi

おすすめ記事