【しぇるすくりぷと】

シェルスクリプト とは?

💡 コマンドを「自動実行する台本」、繰り返しの手作業をスクリプトにおまかせ
📌 このページのポイント
シェルスクリプト ― コマンドの自動実行 手動で1つずつ実行 $ mkdir backup $ cp *.log backup/ $ tar czf backup.tar.gz 毎回手入力が必要... 自動化 シェルスクリプト(.sh) #!/bin/bash mkdir -p backup cp *.log backup/ tar czf backup.tar.gz backup/ echo "完了!" 1回実行するだけでOK! シェルスクリプトのメリット 作業の自動化 繰り返し作業を一発実行 再現性・一貫性 誰が実行しても同じ結果 スケジュール実行 cronで定期実行が可能
シェルスクリプトのイメージ
ひよこ ひよこ

シェルスクリプトって何に使うの?

ペンギン先生 ペンギン先生

自動化が主な用途。例えば「毎日0時にアクセスログをgzip圧縮してS3に保存してメールを送る」という処理を1つのスクリプトに書いてcronで自動実行する、というのが典型的。手動でやると面倒な定型作業をスクリプト化する。

ひよこ ひよこ

Pythonとの違いは?

ペンギン先生 ペンギン先生

シェルスクリプトはコマンドを組み合わせるのが得意(ファイル操作・パイプ処理など)。Pythonはより複雑なロジックや数値処理に向いている。「コマンドを組み合わせる系の自動化→シェルスクリプト」「複雑な処理→Python」が目安。

ひよこ ひよこ

CI/CDでも使うの?

ペンギン先生 ペンギン先生

GiHub Actionsなどのパイプラインでビルド・テスト・デプロイのコマンドを実行する部分がシェルスクリプトで書かれていることが多い。「run: |」の下に書くBashコマンドがそれ。

ひよこ ひよこ

シェルスクリプトでよくやる失敗って何?

ペンギン先生 ペンギン先生

一番危険なのは変数のクォート忘れだよ。「rm -rf $DIR/」と書いてDIRが空だと「rm -rf /」になってシステム全消去になりかねない。「rm -rf "$DIR/"」とダブルクォートで囲むのが鉄則。あとは「set -euo pipefail」を冒頭に書いてエラーで即停止させるのもベストプラクティスだよ。

ひよこ ひよこ

シェルスクリプトって今でも書く価値あるの?Pythonの方がよくない?

ペンギン先生 ペンギン先生

コマンドの組み合わせや単純なファイル操作なら、シェルスクリプトの方が圧倒的に短く書けるよ。Dockerfileの中やCI/CDパイプラインでもシェルスクリプトは必須。ただしif文が複雑になったりJSON/YAMLパースが必要になったりしたら、Pythonに切り替えるタイミングだね。「50行を超えたらPythonを検討する」が実務的な目安だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
シェルスクリプトって出てきたら「シェルコマンドをファイルにまとめた自動化スクリプト、繰り返し作業に使う」と思えばOK!
📖 おまけ:英語の意味
「Shell Script」 = シェルへの命令書(台本)
💬 シェルが逐次実行する「台本(script)」という意味。Bashスクリプト・shスクリプトとも呼ばれる
← 用語集にもどる