初心者のWEBデザイン

HTML,CSS、その他WEBデザインに関する事を記述していきます.

Shell Script デバッグの方法

デバック時に使用するコマンドを詳細します。

set -oオプション 1文字のオプション 内容
verbose set -v コマンドを実行する前にコマンドラインの内容を出力する
xtrace set -x コマンドラインを展開した後の内容を出力する
nounset set -u 未定義の変数を参照した時にエラーとする
errexit set -e コマンドの終了ステータスが0以外であったら即座にシェルを終了する

verboseを使うより変数を展開して出力してくれるxtraceを使用しましょう。
またループ処理の場合の変数の増減変化を展開してくれる為、
処理を追う際に威力を発揮します。

xtraceの先頭の記号は環境変数PS4
exportすれば変更できます。
必要であれば.bash_profileに記述しておきましょう。

#.bashrc

export PS4="\[\e[1;35m\]->\[\e[0m\] "
verbose.sh
set -o verbose
cd /usr
ls
cd "$HOME"
ls

#出力結果
cd /usr
ls
bin		libexec		sbin		standalone
lib		local		share
cd "$HOME"
ls
Applications	Downloads	Pictures		Desktop		Dropbox		Movies		Documents	Library		Music		Public
xtrace.sh
set -o xtrace
cd /usr
ls
cd "$HOME"
ls

#出力結果
+ cd /usr
+ ls
bin		libexec		sbin		standalone
lib		local		share
+ cd /Users/ユーザー名 #$HOMEが展開されてる
+ ls
Applications	Downloads	Pictures		Desktop		Dropbox		Movies		Documents	Library		Music		Public
一部だけオプションを有効にする
set -o xtrace #オプションを無効にする
cd /usr
ls
set -o xtrace #オプションを無効にする

cd "$HOME"
ls