概要
シェルスクリプトは、UNIX系OSのシェル(bash, zsh 等)上で実行されるスクリプト言語です。反復作業の自動化、ビルド・デプロイの整備、ログの解析など、日常の開発運用を強力に支援します。
ポイント: 「手動で3回以上やる作業」はスクリプト化の合図。
基本 / 基礎
最小スクリプト
#!/usr/bin/env bash
echo "Hello Shell!"#!/usr/bin/env bashは実行シェルを指定。chmod +x hello.shで実行権限を付与。./hello.shで実行。
変数・条件・ループ
#!/usr/bin/env bash
NAME=${1:-world}
if [[ -z "$NAME" ]]; then
echo "empty"; exit 1
fi
for i in 1 2 3; do
echo "hi $NAME ($i)"
done
引数未指定なら
world にフォールバック。導入方法 / ダウンロード
- 好きなディレクトリに
.shファイルを作成。 #!/usr/bin/env bashを先頭に記述。chmod +x your_script.shで実行権限。./your_script.shで実行。
Homebrew 等で
bash を最新化するのもおすすめ。応用 / 発展
引数・オプション解析
#!/usr/bin/env bash
set -Eeuo pipefail
usage(){ echo "Usage: $0 [-n name] [-v]"; }
NAME="world"; VERBOSE=false
while getopts ":n:v" opt; do
case "$opt" in
n) NAME="$OPTARG";;
v) VERBOSE=true;;
*) usage; exit 1;;
esac
done
$VERBOSE && echo "verbose on"
echo "Hello $NAME"
並列処理(xargs)
seq 1 8 | xargs -I{} -P4 bash -c 'echo {} ; sleep 1'仕事の現場
Web開発
- Lint/Format の一括実行, 画像最適化, 静的サイトのビルド
- サーバログ整形、簡易アクセス解析
- CI/CD のジョブ(テスト→ビルド→デプロイ)の下回り
アプリ開発
- iOS/Android のビルドスクリプト(fastlane 補助, keystore 操作)
- ローカルのモック生成、スナップショット撮影
TPO
| 状況 | 選択肢 | コメント |
|---|---|---|
| 一回きり/試行 | ワンライナー | 履歴に残す。再現性低め |
| 繰り返し運用 | スクリプト化 | 引数/ログ/エラーハンドリングを整備 |
| チーム共有 | Makefile or npm scripts | 実行統一と依存管理 |
| 大規模/複雑 | Python/Go へ移行 | テスト・型・速度を確保 |
知っておくといい
知識
set -Eeuo pipefailの意味- POSIX シェルと bash 拡張の違い
技能
- テキスト処理:
grep,awk,sed - プロセス/ジョブ制御, パイプ/リダイレクト
用語
- Shebang / 標準入出力 / リダイレクト / Here Document
例
ログから 500 エラー件数
grep "\s500\s" access.log | wc -l画像一括リサイズ(ImageMagick)
mogrify -path ./out -resize 1280x1280 -strip -interlace Plane -quality 82 *.jpgそのほかの Script
- PowerShell(Windows 管理で強力)
- Python(より複雑な処理やAPI連携)
- PHP/Node.js(Web サーバ連携)