Bash機能をデバッグ/追跡する方法は?

Bash機能をデバッグ/追跡する方法は?

myscript.sh多くの機能を含むbashスクリプトがあります。関数を実行するには:

source myscript.sh; myfunction

これらの機能をデバッグする方法は?

答え1

デバッグするセクションの前に次の行を追加するだけです。

set -v -x -e

無効にします。

set +v +x +e

答え2

スクリプトでデバッグを有効にしますfunctrace

set -x
set -o functrace

答え3

Bashでも利用可能でなければなりません。

$ set -xT

これにより関数追跡が行われます。

$ set +xT

障害がある。

また、他の公開された回答を参照して、スクリプト/シェルコマンドセットの構文を確認しない限り、デバッグ(詳細モード)に-vを使用しないことをお勧めします。時々役に立つ別の(一般的な)解決策は、-nこのオプションを組み合わせて使用​​することです-x。これは実際にはコマンド実行の最後のステップを実行せずにスクリプト/コマンドを「実行」します。これにより、不要な混乱を起こすことなくシェル拡張などで難しいバグを見つけることができることが多いです。

関連情報