シェルスクリプトのデバッグ・実行する行と変数展開した行を同時表示する †本資料を公開する前に「シェルスクリプトのデバッグ方法」を公開しています。 関連記事 †使用したシェルスクリプト †以下のシェルスクリプトをtest.shとして保存し使用しました。 #!/bin/bash d=`date` echo $d a=10 b=10 c=`expr $a + $b` echo $c 上記の簡単なシェルスクリプトを作成しました。 -vオプションを使ってみる †上記のシェルスクリプトに-vオプションを使用して起動したときの出力です。 [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オプションを使用して起動したときの出力です。 [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の機能であるこれから実行するスクリプト行を表示します。 #!/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 スクリプトと展開されたスクリプトの両方が表示されるので、とてもわかり易くなります。 |