Bashスクリプトの基本:if-then構文でコマンドを自動化する方法

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 ifelif)を用いることができます。

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構文を習得してください。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
未分類

コメント

タイトルとURLをコピーしました