呼び出し元コマンドを使用してbashスクリプトから行番号のみを返す方法は?

呼び出し元コマンドを使用してbashスクリプトから行番号のみを返す方法は?

初心者の質問です。誰かが助けてくれることを願っています。

エラーチェック機能が組み込まれたbashスクリプトに関数を作成しています。行番号を含むエラーメッセージを返したいです。

Error, parameter not provided, please check line 57

コマンドが見つかりましcallerたが、これが返されます。

57 filename.sh

数値だけを抽出するために正規表現を使用する方法を考えてみましたが、これは過度に見え、呼び出し元のコマンド自体には行番号だけを返すオプションがないようです。

bashで私が欲しいものだけを返す方法はありますか?

呼び出しが行50、500、または5000にある可能性があるため、左側のx文字からのインポートは機能しません。

ベストアンサー1

callerinディレクティブは、bashスペースで区切られた2つの値、つまり呼び出し元の行番号とファイル名を返します。例えば、

57 filename.sh

ここでやるべきことは、最初のパラメータを選択することだけです。awkこれは非常に簡単に実行できます。

caller | awk '{ print $1 }'

結果

57

おすすめ記事