[解決済み] bashスクリプトの実行時に行番号を表示させる方法
2022-11-08 14:44:34
質問
多くのコマンドを持ち、多くの出力を生成するテストスクリプトを持っています。
set -x
または
set -v
そして
set -e
というように、エラー発生時にスクリプトが停止するようにしました。しかし、どの行で実行が停止したかを特定するのが難しく、問題を特定することができません。
各行が実行される前にスクリプトの行番号を出力するような方法はないでしょうか?
あるいは、以下のようなコマンドエキシビジョンが生成される前に行番号を出力する方法はないでしょうか。
set -x
?
または、私のスクリプトの行位置の問題に対処することができる任意のメソッドは、大きな助けになります。
ありがとうございます。
どのように解決するのですか?
あなたは、すでに
-x
. 変数
PS4
が指定された場合、 コマンドラインがエコーされる前に表示されるプロンプトの値を指定します。
-x
オプションが設定され、デフォルトは
:
の後にスペースが入ります。
を変更することができます。
PS4
を出力するように
LINENO
(現在実行中のスクリプトまたはシェル関数の行番号)。
例えば、スクリプトが読み込まれている場合
$ cat script
foo=10
echo ${foo}
echo $((2 + 2))
このように実行すると、行番号が表示されます。
$ PS4='Line ${LINENO}: ' bash -x script
Line 1: foo=10
Line 2: echo 10
10
Line 3: echo 4
4
http://wiki.bash-hackers.org/scripting/debuggingtips
は、究極の
PS4
で、トレースするのに必要なものすべてを出力します。
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
LinuxでSteamをダウンロードしインストールする方法
-
Linux sarコマンドによるシステム性能の詳細解析事例
-
deepinv20 linux ファイルのサフィックスを変更する方法は?Linuxでファイルの拡張子を変更する方法
-
[解決済み] CPAN.pmが@INCに見つからない(@INCには含まれています。/usr/local/lib/perl5 /usr/local/share/perl5。
-
[解決済み] 標準エラー出力を /dev/null にリダイレクトする。
-
[解決済み] エラーです。Can't open display: (null)と表示されることがあります。
-
[解決済み] 複数のPDFファイルを1つのPDFに結合/変換する【終了】。
-
[解決済み] シェルコマンドを実行しながらエコーする方法
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド
-
[解決済み】週1回のcronジョブをテストする【終了しました