※本記事はプロモーションを含みます。

インフラエンジニアにとってシェルスクリプト(Bash)は業務自動化の強力な武器です。本記事では、シェルスクリプトの基礎から実際の業務で使えるスクリプト例まで、インフラエンジニア向けに解説します(読了目安:約12分)。

シェルスクリプトとは何か

定義と特徴

シェルスクリプトはLinux/Unixのシェルコマンドをテキストファイルにまとめたものです。実行することでコマンドを自動的に順番に処理できます。

  • 追加インストール不要(Linuxには標準搭載)
  • OSのコマンドをそのまま組み合わせられる
  • ログ収集・バックアップ・監視など定型作業の自動化に最適
  • Python等と比べ、OS操作(ファイル・プロセス・ネットワーク)に強い

よく使われるシェルの種類

シェル特徴
bash最も広く使われる。LinuxやmacOSで標準
shPOSIX準拠の基本シェル
zsh補完機能が豊富。macOS Catalina以降のデフォルト

シェルスクリプトの基本文法

ファイルの作成と実行

シェルスクリプトファイルは.sh拡張子で保存します。

#!/bin/bash
# これはコメントです
echo "Hello, World!"

実行権限を付与して実行します:

chmod +x hello.sh
./hello.sh

変数の使い方

#!/bin/bash
SERVER_NAME="web-server-01"
LOG_DIR="/var/log/nginx"

echo "サーバー名: ${SERVER_NAME}"
echo "ログディレクトリ: ${LOG_DIR}"

条件分岐(if文)

#!/bin/bash
DISK_USAGE=$(df / | awk 'NR==2{print $5}' | tr -d '%')

if [ "${DISK_USAGE}" -ge 80 ]; then
    echo "警告: ディスク使用率が${DISK_USAGE}%です"
else
    echo "ディスク使用率: ${DISK_USAGE}%(正常)"
fi

繰り返し(for文・while文)

#!/bin/bash
# サーバーリストにpingを実行
SERVERS=("192.168.1.1" "192.168.1.2" "192.168.1.3")

for SERVER in "${SERVERS[@]}"; do
    if ping -c 1 "${SERVER}" &>/dev/null; then
        echo "${SERVER}: OK"
    else
        echo "${SERVER}: NG"
    fi
done

インフラ業務で使える実践スクリプト例

ログ監視・アラート

#!/bin/bash
# エラーログのカウントと通知
LOG_FILE="/var/log/nginx/error.log"
ERROR_COUNT=$(grep "$(date '+%Y/%m/%d')" "${LOG_FILE}" | grep -c "error")

if [ "${ERROR_COUNT}" -gt 10 ]; then
    echo "本日のエラー件数: ${ERROR_COUNT}件 - 要調査" |     mail -s "Nginx Error Alert" admin@example.com
fi

バックアップスクリプト

#!/bin/bash
DATE=$(date '+%Y%m%d')
BACKUP_SRC="/etc/nginx"
BACKUP_DST="/backup/nginx_${DATE}.tar.gz"

tar -czf "${BACKUP_DST}" "${BACKUP_SRC}"

if [ $? -eq 0 ]; then
    echo "バックアップ完了: ${BACKUP_DST}"
else
    echo "バックアップ失敗" >&2
    exit 1
fi

定期実行(cron連携)

作成したスクリプトをcronに登録して定期実行させます:

# crontab -e で以下を追加
# 毎日深夜2時にバックアップを実行
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1

シェルスクリプト作成時のベストプラクティス

エラーハンドリングを必ず入れる

  • set -e:コマンド失敗時にスクリプトを終了
  • set -u:未定義変数の使用でエラー終了
  • set -o pipefail:パイプラインでのエラーを捕捉

ログを残す

スクリプトの実行結果は必ずログに出力します。問題発生時の調査が格段に楽になります。

テストを段階的に行う

本番環境で直接動かす前に、echoで出力確認する「ドライラン」を行う習慣をつけましょう。

まとめ

シェルスクリプトはインフラエンジニアの生産性を大幅に向上させる必須スキルです。まず小さな定型作業を自動化することから始め、徐々に複雑なスクリプトに挑戦していきましょう。LPIC-1・CCNAなどの資格学習でも役立つ知識です。

シェルスクリプトのデバッグ技法

スクリプトがうまく動かないときのデバッグ方法を知っておくと、問題解決が格段に速くなります。

bashのデバッグオプション

#!/bin/bash
set -x  # 各コマンドを実行前に表示(トレース)
set -e  # エラー発生時に即終了
set -u  # 未定義変数でエラー

# または実行時に指定
bash -x script.sh

ログ出力を強化する

#!/bin/bash
LOG_FILE="/var/log/myscript.log"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "${LOG_FILE}"
}

log "スクリプト開始"
# 処理
log "スクリプト完了"

よく使うシェルコマンドの組み合わせ

ログ集計コマンド例

# アクセスログからステータスコード別カウント
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

# 特定日時範囲のエラー抽出
awk '/2026-06-07 10:/ && /ERROR/' /var/log/app/app.log

# プロセスのCPU使用率をモニタリング
ps aux --sort=-%cpu | head -10

免責事項

本記事の情報は執筆時点のものです。資格試験の合格・年収は個人の努力・環境により大きく異なります。転職・キャリアに関する判断は必ず公式情報および専門家にご確認ください。

シェルスクリプトをさらに活用するために

基礎を習得した後のステップアップ方法を紹介します。

Pythonとの使い分け

シェルスクリプトはOSコマンドの組み合わせに強く、Pythonはデータ処理・APIコール・複雑な処理に強いです。「ファイルのバックアップ・ログローテーション・定期的なコマンド実行」はシェルスクリプト、「複雑なデータ変換・Web API連携・機械学習処理」はPythonと使い分けるのが一般的です。

ShellCheckでコードを品質チェック

shellcheckはシェルスクリプトの静的解析ツールです。よくある間違い(変数のクォーティング漏れ・比較演算子の誤用など)を自動検出してくれます。

# インストール(macOS)
brew install shellcheck
# 実行
shellcheck myscript.sh

テンプレート化して再利用する

よく使うパターン(ログ出力・エラーハンドリング・引数チェック)をテンプレートとして持っておくと、新規スクリプト作成が格段に速くなります。

免責事項

本記事の情報は執筆時点のものです。資格試験の合格・年収は個人の努力・環境により大きく異なります。転職・キャリアに関する判断は必ず公式情報および専門家にご確認ください。

資格取得後のキャリアに、AI活用という選択肢を

資格取得の先に現場でのIT効率化を任される場面が増えます。職場のルーティン業務にAIをどう組み込めるか、無料のセルフ診断(3問・約1分)でヒントが得られます。

AI業務効率化 無料診断へ →

この記事を読んでいる方へのおすすめ:

【編集・制作ポリシー】
本記事はRoute Bloom編集部が公式ドキュメント・技術仕様書の一次情報をもとに作成しています。ITインフラ・技術情報は急速に変化するため、実装前に最新の公式ドキュメントをご確認ください。情報の正確性には万全を期していますが、最新情報は各公式サイトをご確認ください。
【編集・制作ポリシー】
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
【編集・制作ポリシー】
本記事はRoute Bloom編集部が各ベンダー・技術標準の公式ドキュメントをもとに作成しています。 インフラ・クラウド技術に関する最終判断は実際の環境・バージョンで検証のうえ実施してください。 情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。

編集ポリシー:この記事は、Route Bloom の編集チームが最新情報を元に執筆・監修しています。情報の正確性を保つために定期的な見直しを行っています。

この記事で学んだスキルをさらに深めたい方へ

Linuxの知識をさらに深めたい方はこちらの技術書がおすすめです。コマンドラインからサーバー管理まで網羅しています。

Amazonアソシエイトプログラムを利用しています。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営