シェルスクリプトをデバッグする方法
目次
スポンサードリンク
シェルスクリプトをデバッグする方法はいくつかあります。 echo コマンドでどこまで処理が実行されたか出力する方法もありますが、シェルを実行する際に -x オプションを使用すると簡単にデバッグすることができます。
サンプルコード
このシェルスクリプトは ループ処理内で変数idxの値を出力しながら、変数の値を1ずつ加算していき、条件に合致したら処理をループを終了するシンプルなスクリプトです。
#!/bin/bash
idx=0
while true
do
sleep 1
echo $idx
idx=`expr $idx + 1`
if [ $idx -eq 3 ]; then
break;
fi
done
exit 0
このシェルスクリプトを実行すると、以下のような結果になります。ループの回数分、変数idxの値が表示されます。
[root@133-130-122-109 tmp]# sh roop.sh
0
1
2
シェル実行時に -x オプションを指定する方法
-x オプションを付けて実行すると、以下のように各処理を実行するたびに処理内奥を画面に表示します。どのような順序で処理が実行されるのか、また、どこまで処理が実行されたのか確認することができます。シェルスクリプトを開発する際に役立つTipsですね。
[root@133-130-122-109 tmp]# sh -x roop.sh
+ idx=0
+ true
+ sleep 1
+ echo 0
0
++ expr 0 + 1
+ idx=1
+ '[' 1 -eq 3 ']'
+ true
+ sleep 1
+ echo 1
1
++ expr 1 + 1
+ idx=2
+ '[' 2 -eq 3 ']'
+ true
+ sleep 1
+ echo 2
2
++ expr 2 + 1
+ idx=3
+ '[' 3 -eq 3 ']'
+ break
+ exit 0
スクリプト内で set -x を指定する方法
シェルをオプション付きで実行するのではなく、スクリプトのファイル内に記述する方法もあります。 以下のように、set -x をスクリプト内に記述しても同様の結果を得られます。
#!/bin/bash
set -x
idx=0
while true
do
sleep 1
echo $idx
idx=`expr $idx + 1`
if [ $idx -eq 3 ]; then
break;
fi
done
exit 0
シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。
最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。
Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】
Search
Recent Posts
- カーネル更新やパッケージのパッチ適用後、OSの再起動が必要か確認するLinuxコマンド(needs-restarting)
- OpenSSHのエラー「bad ownership or modes for chroot directory component」の原因と解消方法
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法