Bashで作る実用シェルスクリプト入門

― 業務で使える自動化・運用スクリプトの基本 ―

この記事で学べること

  • Bashスクリプトの基本構造と書き方
  • 実務で頻出する制御構文・変数・関数
  • ログ取得・エラーハンドリングの実装方法
  • 運用・自動化でそのまま使えるサンプルスクリプト

Bashとは何か(シェルスクリプトの位置づけ)

Bash(Bourne Again Shell)は、Linuxで最も広く使われているシェルであり、
コマンド操作の自動化・定型作業の省力化に特化したスクリプト言語です。

PythonやJavaと比較すると以下の特徴があります。

項目Bash
主用途OS操作・運用自動化
学習コスト低い
処理速度高速(軽量)
複雑なロジック不向き

Bashスクリプトの基本構造

最小構成のスクリプト

#!/bin/bash

echo "Hello, Bash Script"
  • 1行目(シェバン):使用するシェルを指定
  • 実行権限を付与して実行
chmod +x sample.sh
./sample.sh

変数と引数の扱い

変数定義と参照

name="Taro"
echo "Hello, $name"

= の前後にスペースは入れない

コマンドライン引数

#!/bin/bash

echo "引数1: $1"
echo "引数2: $2"
./script.sh apple banana

条件分岐(if / test)

基本構文

if [ "$1" = "start" ]; then
  echo "開始します"
elif [ "$1" = "stop" ]; then
  echo "停止します"
else
  echo "不正な引数です"
fi

数値比較

if [ "$count" -gt 10 ]; then
  echo "10より大きい"
fi

繰り返し処理(for / while)

for文(リスト処理)

for file in *.log
do
  echo "処理中: $file"
done

while文(条件ループ)

count=1
while [ $count -le 5 ]
do
  echo $count
  count=$((count + 1))
done

関数定義と再利用

backup() {
  cp "$1" "$1.bak"
}

backup config.conf
  • 処理を分割することで保守性が向上
  • 実務スクリプトでは必須

実用例①:ログ付きバックアップスクリプト

#!/bin/bash

LOG="/var/log/backup.log"
SRC="/etc"
DST="/backup/etc_$(date +%Y%m%d)"

echo "$(date) Backup start" >> "$LOG"

cp -r "$SRC" "$DST"

if [ $? -eq 0 ]; then
  echo "$(date) Backup success" >> "$LOG"
else
  echo "$(date) Backup failed" >> "$LOG"
fi

ポイント

  • date による日付付きディレクトリ
  • $? で直前コマンドの終了コード判定
  • ログファイルへの追記

実用例②:ディスク使用率監視スクリプト

#!/bin/bash

THRESHOLD=80
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')

if [ "$USAGE" -ge "$THRESHOLD" ]; then
  echo "ディスク使用率が ${USAGE}% に達しています"
fi
  • cron と組み合わせることで簡易監視が可能

エラーハンドリングの基本

即時終了(安全なスクリプト)

set -e

未定義変数をエラーにする

set -u

推奨設定(実務向け)

set -euo pipefail

よくある失敗と注意点

  • 変数を "${var}" で囲まない
  • rm -rf を変数展開付きで使う
  • スペース・改行を考慮しないループ処理

Bashを使うべき場面・使わない場面

Bashが向いている

  • サーバー運用・定期処理
  • 簡単な監視・バックアップ
  • コマンド連携処理

他言語を検討すべき

  • 複雑な業務ロジック
  • API通信・JSON処理
  • 大規模システム

まとめ

Bashスクリプトは、
「知っているだけで作業効率が大きく変わる」実務必須スキルです。

  • 小さく書く
  • 危険な操作は必ず確認
  • ログとエラーハンドリングを意識

これらを守ることで、安全で再利用可能なスクリプトが作成できます。

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