bash 関数をデバッグ/トレースするにはどうすればいいですか?

bash 関数をデバッグ/トレースするにはどうすればいいですか?

myscript.sh私はたくさんの関数が入ったbashスクリプトを持っています。1つの関数を実行するには次のように書きます。

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 を使用することはお勧めしません。 役に立つことがあるもう 1 つの (一般的な) 解決策は、-nと組み合わせてオプションを使用することです-x。 これにより、コマンドを実行する最後の手順を実際に実行せずに、スクリプト/コマンドを「実行」します。 これにより、不要な混乱を引き起こすことなく、シェル拡張などの難しいエラーを検出できることがよくあります。

関連情報