シェルスクリプトの実行中に、実行中の行番号を知る方法は、 shell スクリプトからシェルスクリプトを実行し、実行中の行番号を知ることができるラッパーを作成する必要があります。
質問する
7578 次
3 に答える
21
出力に行番号を含めるようにPS4
変数を設定できます。set -x
PS4=':${LINENO}+'
set -x
これにより、実行時に各行の前に行番号が付けられます。
:4+command here
:5+other command
+
の変数展開の後に、いくつかのシジル文字 (私の例では a など) を持つことが重要PS4
です。最後の文字は、ネストの深さを示すために繰り返されるためです。つまり、関数を呼び出し、その関数がコマンドを呼び出すと、からの出力は次のset -x
ように報告されます。
:3+++command run within a function called from a function
:8++command run within a function
:19+line after the function was called
スクリプトの実行に複数のファイルが関与している場合は、BASH_SOURCE
変数のみを含めるのではなく、含めることをお勧めしますLINENO
(これが本当に bash スクリプトであると仮定すると、スクリプトが!/bin/sh
で始まることを確認してください)。#!/bin/bash
PS4=':${BASH_SOURCE}:${LINENO}+'
set -x
于 2012-05-30T11:22:15.400 に答える
6
Bashには、必要な$LINENO
ことを行う特別な変数があります。
#!/bin/bash
echo "$LINENO"
echo "$LINENO"
echo "$LINENO"
デモ:
$ ./lineno
2
3
4
于 2012-05-30T11:17:13.110 に答える
5
#!/bin/sh -x
実行された行を報告します(-x
明確にするためのオプション)。行番号は表示されませんが、実際の行が報告されます。
別の、しかしより面倒なアプローチは、ここに記載されているように、トラップ ハンドラーを使用することです。
于 2012-05-30T09:51:46.473 に答える