Bashスクリプトを使いこなすことは、LinuxやUnix環境での作業を効率化する上で非常に有益です。特に、条件に応じて処理を変更できるif-then
構文は、スクリプト自動化の中核を担う重要な技術です。この記事では、Bashスクリプトのif-then
構文の基本を解説し、それを用いたコマンド自動化の方法を説明します。
Bashスクリプトとは
Bashスクリプトは、LinuxやUnixで使われるシェルスクリプトの一種で、Bash(Bourne Again Shell)というシェル環境上で動作します。これらのスクリプトは、繰り返しのプロセスを自動化し、日常業務の効率性を劇的に向上させます。通常のコマンド操作をまとめてスクリプトにすることで、作業時間を短縮し、人為的なミスを減らせます。
if-then構文の基本
if-then
構文は、指定した条件が満たされるかどうかを判断し、その結果に応じてブロック内のコマンドを実行します。基本的な構文は以下の通りです:
if [ 条件式 ]; then
# 条件が真(True)のときに実行されるコマンド
fi
ここで[ 条件式 ]
は、テストコマンドtest
の省略形です。シェルスクリプトでは、条件式は一般的にファイルの存在チェックや、文字列や数値の比較が行われます。
使用例
以下は、ファイルが存在するかどうかを確認する基本的な例です。
#!/bin/bash
if [ -e myfile.txt ]; then
echo "myfile.txtは存在します。"
else
echo "myfile.txtは存在しません。"
fi
ここで、-e
は「ファイル存在確認」のためのオプションです。ファイルが存在する場合はthen
ブロックが、存在しない場合はelse
ブロックが実行されます。
よく使われる条件式
ファイル条件
-
-e ファイル名
:ファイルが存在するか -
-d ディレクトリ名
:ディレクトリが存在するか -
-f ファイル名
:通常ファイルかどうか -
-s ファイル名
:ファイルが空でないか
数値比較
-
-eq
:等しい -
-ne
:等しくない -
-gt
:大きい(greater than) -
-lt
:小さい(less than)
例:
if [ $a -gt $b ]; then
echo "aはbより大きい"
fi
文字列比較
-
=
:等しい -
!=
:等しくない -
-n
:長さが非ゼロ -
-z
:長さがゼロ
if [ "$str1" = "$str2" ]; then
echo "文字列は同一です。"
fi
複数条件を使う
if-then
構文は、複数の条件を組み合わせることも可能です。論理演算子&&
(AND)、||
(OR)を使い、複数の条件を結合できます。
例:
if [ $a -gt 5 ] && [ $b -lt 10 ]; then
echo "aは5より大きく、bは10より小さい"
fi
if-else if-else構文
複数の条件を連続して評価する場合には、else if
(elif
)を用いることができます。
if [ 条件1 ]; then
# 条件1が真のとき
elif [ 条件2 ]; then
# 条件2が真のとき
else
# どちらの条件も真でないとき
fi
実用例
たとえば、数値の範囲に応じて異なるメッセージを出力するスクリプトは次のようになります。
#!/bin/bash
read -p "数値を入力してください: " num
if [ $num -lt 0 ]; then
echo "入力された数は負の数です。"
elif [ $num -eq 0 ]; then
echo "入力された数はゼロです。"
else
echo "入力された数は正の数です。"
fi
具体的な例:ディスク使用率の監視
自動化の一例として、ディスク使用率が一定の閾値を超えた場合に警告を出すスクリプトを考えてみましょう。
#!/bin/bash
THRESHOLD=90
USAGE=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
if [ $USAGE -gt $THRESHOLD ]; then
echo "警告:ディスク使用率が$THRESHOLD%を超えました。現在の使用率は$USAGE%です。"
else
echo "ディスク使用率は正常です。現在の使用率は$USAGE%です。"
fi
このスクリプトはdf
コマンドでファイルシステムのディスク使用率を取得し、閾値を超えるかどうかをチェックします。
まとめ
Bashスクリプトのif-then
構文を理解することは、シェルスクリプトを用いた自動化の世界への重要な第一歩です。適切に条件を設定し、それに基づいてスクリプトを実行することで、システム管理やデプロイメント、データ処理の効率を大きく向上させることができます。条件分岐を自由に操ることで、スクリプトの柔軟性と調整力が大幅に強化されることでしょう。今後、更に複雑なスクリプトを組むための基礎技術として、ぜひこのif-then
構文を習得してください。
コメント