― 業務で使える自動化・運用スクリプトの基本 ―
この記事で学べること
- 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スクリプトは、
「知っているだけで作業効率が大きく変わる」実務必須スキルです。
- 小さく書く
- 危険な操作は必ず確認
- ログとエラーハンドリングを意識
これらを守ることで、安全で再利用可能なスクリプトが作成できます。

