シェルスクリプト入門:初心者でもわかる自動化の基本と実践テクニック
シェルスクリプトの基本を学び、bashの変数やcronを使った自動化をマスター。初心者向けに具体例を交えて解説します。
シェルスクリプト入門自動化bashcron変数2026/5/25
シェルスクリプトとは?
シェルスクリプトは、LinuxやUnix系OSで動作するコマンドを自動実行するためのプログラムです。bash(Bourne Again SHell)が最も一般的で、ファイル操作、システム管理、バッチ処理など様々な自動化に利用されます。
シェルスクリプトのメリット
環境準備
必要なもの
シェルの確認
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 で編集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 日以上前のログを削除しました"
トラブルシューティング
よくあるエラー
chmod +x./ を付けるfi 忘れデバッグ方法
bash -x script.sh
各行の実行内容が表示される。
まとめ
シェルスクリプトは、日常の繰り返し作業を自動化する強力なツールです。この記事で紹介した変数、条件分岐、ループを組み合わせれば、複雑な処理もシンプルに実装できます。まずは簡単なスクリプトから試し、徐々に自動化の範囲を広げてみてください。