シェルスクリプト入門:初心者でもわかる自動化の基本と実践テクニック

シェルスクリプトの基本を学び、bashの変数やcronを使った自動化をマスター。初心者向けに具体例を交えて解説します。

シェルスクリプト入門自動化bashcron変数2026/5/25

シェルスクリプトとは?

シェルスクリプトは、LinuxやUnix系OSで動作するコマンドを自動実行するためのプログラムです。bash(Bourne Again SHell)が最も一般的で、ファイル操作、システム管理、バッチ処理など様々な自動化に利用されます。

シェルスクリプトのメリット

  • 繰り返し作業の自動化:毎回手動で打つコマンドをスクリプト化
  • スケジュール実行:cronと組み合わせて定期的に実行
  • 条件分岐やループ:複雑な処理もシンプルに記述
  • 環境準備

    必要なもの

  • LinuxまたはmacOS(WindowsはWSLやGit Bash推奨)
  • テキストエディタ(Vim, Nano, VS Codeなど)
  • ターミナル
  • シェルの確認

    echo $SHELL
    
    通常は /bin/bash です。

    最初のシェルスクリプト

    ファイル作成と実行

    <h1>ファイル作成</h1>
    touch hello.sh
    

    <h1>エディタで開く</h1> nano hello.sh

    次のコードを記述:

    #!/bin/bash
    <h1>最初のシェルスクリプト</h1>
    echo "Hello, World!"
    

    実行権限を付与

    chmod +x hello.sh
    

    実行

    ./hello.sh
    <h1>出力: Hello, World!</h1>
    

    解説

  • #!/bin/bash(シバン):スクリプトを実行するインタプリタを指定
  • #:コメント行
  • echo:文字列を出力
  • 変数とデータ操作

    変数の定義と使用

    #!/bin/bash
    name="Taro"
    echo "Hello, $name"
    
  • 変数名は英数字とアンダースコア、先頭は数字不可
  • 代入時に=の前後にスペースを入れない
  • 参照時に$を付ける
  • ユーザー入力の取得

    #!/bin/bash
    echo "あなたの名前は?"
    read user_name
    echo "こんにちは、$user_name さん!"
    

    コマンド置換

    #!/bin/bash
    current_date=$(date)
    echo "現在日時: $current_date"
    

    条件分岐(if文)

    基本構文

    #!/bin/bash
    if [ 条件 ]; then
        処理
    elif [ 条件 ]; then
        処理
    else
        処理
    fi
    

    数値比較

    #!/bin/bash
    num=10
    if [ $num -gt 5 ]; then
        echo "$num は5より大きい"
    fi
    

    主な比較演算子:

  • -eq:等しい
  • -ne:等しくない
  • -gt:より大きい
  • -lt:より小さい
  • -ge:以上
  • -le:以下
  • 文字列比較

    #!/bin/bash
    str="hello"
    if [ "$str" = "hello" ]; then
        echo "一致"
    fi
    

    ファイル判定

    #!/bin/bash
    if [ -f "/etc/passwd" ]; then
        echo "ファイルが存在します"
    fi
    

    ループ処理

    forループ

    #!/bin/bash
    for i in 1 2 3 4 5; do
        echo "Number: $i"
    done
    

    whileループ

    #!/bin/bash
    count=1
    while [ $count -le 5 ]; do
        echo "Count: $count"
        ((count++))
    done
    

    自動化の実践例

    バックアップスクリプト

    #!/bin/bash
    <h1>バックアップ先ディレクトリ</h1>
    backup_dir="/backup"
    source_dir="/home/user/documents"
    

    <h1>バックアップファイル名(日付付き)</h1> filename="backup_$(date +%Y%m%d_%H%M%S).tar.gz"

    <h1>バックアップ実行</h1> tar -czf "$backup_dir/$filename" "$source_dir"

    echo "バックアップ完了: $filename"

    cronで定期実行

  • スクリプトに実行権限を付与
  • crontab -e で編集
  • 例:毎日午前3時に実行
  • 0 3 * * * /home/user/backup.sh
    

    ログローテーション

    #!/bin/bash
    log_dir="/var/log/myapp"
    max_days=7
    

    find "$log_dir" -name "*.log" -type f -mtime +$max_days -delete echo "$max_days 日以上前のログを削除しました"

    トラブルシューティング

    よくあるエラー

  • Permission denied:実行権限がない→ chmod +x
  • command not found:パスが通っていない→ 絶対パスか ./ を付ける
  • syntax error:スペルミスや fi 忘れ
  • デバッグ方法

    bash -x script.sh
    
    各行の実行内容が表示される。

    まとめ

    シェルスクリプトは、日常の繰り返し作業を自動化する強力なツールです。この記事で紹介した変数、条件分岐、ループを組み合わせれば、複雑な処理もシンプルに実装できます。まずは簡単なスクリプトから試し、徐々に自動化の範囲を広げてみてください。

    次のステップ

  • 関数の作成
  • 配列の活用
  • 正規表現を使った文字列処理
  • sedやawkとの連携