
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
。 これにより、コマンドを実行する最後の手順を実際に実行せずに、スクリプト/コマンドを「実行」します。 これにより、不要な混乱を引き起こすことなく、シェル拡張などの難しいエラーを検出できることがよくあります。