OS・ミドルウェア

Linuxで「bash」スクリプトをデバッグ--役に立つ2つのツール

多くの「Linux」管理者にとって、欠かせない「bash」スクリプト。bashスクリプトが意図したとおりに実行されないとき、特定のデバッグツールを使用すると、スクリプト内の重点的にデバッグしたい部分にマークを付けることが可能だ。

 多くの「Linux」管理者にとって、「bash」スクリプトは欠かせないものだ。これらの便利なスクリプトのおかげで、Linuxは地球上で最も柔軟なOSの1つとなっている。スクリプトをうまく記述すれば、ほとんどのことを実現できる。しかし、スクリプトを慎重に構築したにもかかわらず、意図したとおりに実行されないときは、どうすればいいのだろうか。何らかの問題があるはずだ。スクリプトが長くて複雑な場合は、問題を特定するのに時間がかかるかもしれない。

 幸い、bashスクリプトのデバッグに利用できるツールはたくさんある。そうしたツールの1つが「set x」だ。この特定のデバッグツールを使用すると、スクリプト内の重点的にデバッグしたい部分にマークを付けることが可能である。set xでは、スクリプト全体、スクリプトの一部、または単一の行のいずれかをデバッグできる。2つめの便利なツールは、スクリプトの出力をファイルに記録できる機能を提供する。この機能は、かなり便利である。スクリプトが通常より長い(あるいは、後で出力をデバッグしたい)場合は、特にそうだ。

 これら2つのツールが簡単なbashスクリプトでどのように使用されるのかを、以下で説明する。

必要なもの

 今回、必要なのは、Linuxディストリビューションだけだ。ただし、ほぼすべてのディストリビューションに必要なツール群が含まれているとはいえ、bashのバージョンが5.0以上であることが条件となる。自分のディストリビューションのbashのバージョンを確認するには、bash --versionコマンドを実行するといい。今回はコマンドラインを使用するので、デスクトップとサーバーディストリビューションのどちらを使っていても構わない。

スクリプト

 このテストでは、以下の初歩的なスクリプトを使用する。

#!/bin/bash

var="Hello World"

# print it
echo "$var"

# Another way of printing it
printf "%s\n" "$var"

echo "Your home is: $HOME"

 これはかなり簡単なスクリプトだ。nano hello.worldコマンドを実行して、上記の内容を含む新しいファイルを作成する。そのファイルを保存して閉じる。以下のコマンドを実行して、新しいファイルに実行権限を付与する。

chmod u+x hello.world

 次に、以下のコマンドでスクリプトを実行する。

sh ./hello.world

 期待したとおりの出力が表示されるはずだ(図A)。


図A:bashスクリプトの出力。
図A:bashスクリプトの出力。

 もちろん、このスクリプトに何も問題はない。だが、例としては最適だ。

修正されたスクリプト

 今度は、デバッグツールを追加するために、スクリプトを修正する。最初はログエントリーだ。#!/bin/bashの下に、以下を追加する。

exec 5> debug_output.txt
BASH_XTRACEFD="5"
PS4='$LINENO: '

 最初の行は、デバッグファイルに「debug_output.txt」という名前を付ける。2行目は、xtrace情報を書き込む場所(set xで宣言される)をbashに指示する。最後に、3行目は行番号を出力し、デバッグをさらに容易にする。

「OS・ミドルウェア」で読まれている記事

TechRepublic Japanで人気の記事

編集部オススメ

トレンドまるわかり![PR]

財務・経理
人事・労務
マーケ・営業
購買・調達
生産・製造
データ分析
コミュニケーション
通信・通話
文書・コンテンツ
PC・モバイル
新興技術
ITインフラ
クラウドサービス
OS・ミドルウェア
OS
ミドルウェア
アプリケーションサーバー
開発
データベース
運用
セキュリティ

ホワイトペーパーランキング

  1. マンガでわかる「ルール駆動開発」レガシーモダナイズを成功させる開発手法を基礎から理解する
  2. 5分でわかる、レポート作成の心得!成果至上主義のせっかちな上司も納得のレポートとは
  3. APIエコシステムを狙うサイバー攻撃が急増、Webアプリにおける最新のAPIセキュリティ対策とは?
  4. クラウドやコンテナ利用が増える中、世界の企業が利用するAPI経由の安全なアプリ構築手法とは?
  5. ウェビナーによる営業活動が本格化、顧客接点が増加する一方で見えてきたハードルと解決策とは?

Follow TechRepublic Japan

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]