このエントリーをはてなブックマークに追加


シェルスクリプトのデバッグ・実行する行と変数展開した行を同時表示する

本資料を公開する前に「シェルスクリプトのデバッグ方法」を公開しています。
この資料は、-xオプションを使用したシェルスクリプトのデバッグについて記述してあります。
今回は、これから実行するスクリプト行を表示する-vオプションの使用例と、-vと-xの同時併用の使用例を記します。
尚、使用したシェルはbashになります。


関連記事

使用したシェルスクリプト

以下のシェルスクリプトをtest.shとして保存し使用しました。

#!/bin/bash

d=`date`
echo $d
a=10
b=10
c=`expr $a + $b`
echo $c

上記の簡単なシェルスクリプトを作成しました。
このスクリプトを使用して-v, -x オプションを使用してみます。

-vオプションを使ってみる

上記のシェルスクリプトに-vオプションを使用して起動したときの出力です。
各スクリプト行が表示されています。
また、スクリプト内にechoがあるのでechoで指定した変数などの値が出力されているのが確認できます。

[sakura@centos6 ~]$ bash -v test.sh
#!/bin/bash

d=`date`
date
echo $d
2013年 2月 15日 金曜日 01:28:00 JST
a=10
b=10
c=`expr $a + $b`
expr $a + $b
echo $c
20

-xオプションを使ってみる

上記のシェルスクリプトに-vオプションを使用して起動したときの出力です。
各スクリプト行の変数が展開されて表示されています。
また、スクリプト内にechoがあるのでechoで指定した変数などの値が出力されているのが確認できます。

[sakura@centos6 ~]$ bash -x test.sh
++ date
+ d='2013年  2月 15日 金曜日 01:30:15 JST'
+ echo $'2013\345\271\264' $'2\346\234\210' $'15\346\227\245' $'\351\207\221\346\233\234\346\227\245' 01:30:15 JST
2013年 2月 15日 金曜日 01:30:15 JST
+ a=10
+ b=10
++ expr 10 + 10
+ c=20
+ echo 20
20

この出力だと、スクリプト行がすでに展開された状態のもののみが表示されるので、少々見にくい場合があります。

-x, -vオプションを両方とも使ってみる

オプション-v, -xの両方を使うと上記で記しオプション-vの機能であるこれから実行するスクリプト行を表示します。
オプション-xはスクリプト行の変数が展開されて表示されます。
実際に実行し時の出力です。 [sakura@centos6 ~]$ bash -vx test.sh

#!/bin/bash

d=`date`
date
++ date
+ d='2013年  2月 15日 金曜日 01:34:20 JST'
echo $d
+ echo $'2013\345\271\264' $'2\346\234\210' $'15\346\227\245' $'\351\207\221\346\233\234\346\227\245' 01:34:20 JST
2013年 2月 15日 金曜日 01:34:20 JST
a=10
+ a=10
b=10
+ b=10
c=`expr $a + $b`
expr $a + $b
++ expr 10 + 10
+ c=20
echo $c
+ echo 20
20

スクリプトと展開されたスクリプトの両方が表示されるので、とてもわかり易くなります。
以上、シェルスクリプトのデバッグにおいて、-v, -xオプションの使用方法について記述しました。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:03