アーカイブ

2013 年 12 月 のアーカイブ

Shellスクリプトをデバッグ(ステップ実行)する

2013 年 12 月 28 日 コメントはありません

Shellスクリプトのテストを行う際に、1行1行処理をステップ実行して動作確認したい場合があります。
trapコマンドを使用したデバッグ方法を紹介します。

trapコマンド

trapコマンドは、指定したシグナルが発生した際に、特定のコマンドを実行するためのコマンドです。

■構文

trap [コマンド] [シグナル ...]

ステップ実行

Shellスクリプトが1行実行されるたびに、DEBUGシグナルが発生します。
trapコマンドでDEBUGシグナルを補足することで、ステップ実行をすることができます。

Shellスクリプトの冒頭に以下のコマンドを追加します。

■コマンド

trap ‘read -p “$0($LINENO) $BASH_COMMAND”‘ DEBUG

DEBUGシグナルが発生した際に、readコマンドを実行してコマンドプロンプトからの入力を待ちます。
readコマンドの-pオプションで、プロンプトに実行しているプロセス名($0)と行番号($LINENO)、実行しているコマンド($BASH_COMMAND)を表示します。

Shellスクリプトには以下のように追加します。

■test.sh

#!/bin/sh

trap 'read -p "$0($LINENO) $BASH_COMMAND"' DEBUG

echo Hello!
echo Good Bye!

実行すると以下のように1行毎にプロンプトが表示されます。

# ./test.sh
./test.sh(5) echo Hello!
Hello!
./test.sh(6) echo Good Bye!
Good Bye!

シグナルを補足しないようにするには以下のようにtrapコマンドを実行します。

trap – DEBUG

以上です。


カテゴリー: Linux タグ: ,