シェルスクリプトとは

このレッスンで分かること

  • シェルスクリプトはコマンドをテキストにまとめた自動化スクリプトです
  • 先頭の shebang #!/bin/bash でインタプリタを指定します
  • chmod +x script.sh で実行権限を付け、./script.sh で実行します

シェルスクリプト とは

シェルスクリプトの基本と、作成・実行するための概念について解説します。本レッスンでは、シェルスクリプト の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ重要か

運用や開発の現場では、同じコマンドを毎日のように繰り返します。バックアップを取る、ログを集計する、デプロイ前に依存をインストールする、サーバーの死活を確認する。手で打っていたら数分かかる作業も、シェルスクリプトにまとめておけば一行で再現できます。属人化を防ぎ、ミスを減らし、CI/CD やサーバー上の cron からも呼べるようになるため、Linux を使うエンジニアにとってシェルスクリプトは「自動化の最初の選択肢」になります。

Python や Node.js でも自動化はできますが、シェルスクリプトの強みは「環境にすでにある」「外部コマンドをそのまま並べて呼べる」「短く書ける」点です。インフラ寄りのタスクや、コマンドをパイプでつなぐ系の処理は、シェルで書いた方が圧倒的に短くなります。

シェルスクリプトの正体

シェルスクリプトは、シェルが解釈する一連のコマンドをテキストファイルにしたものです。bashsh などのシェルがそのファイルを上から順に読み込み、書かれている通りにコマンドを実行します。

ターミナル

#!/bin/bash echo "Hello, Linux" date whoami

1 行目の #!/bin/bashshebang (シバン) と呼ばれ、このスクリプトを実行するときに使うインタプリタを OS に伝えるおまじないです。これがないと、ファイルがどのシェルで動かすべきかが分からず、意図しないシェルで動いてしまうことがあります。

実行までの流れ

diagram (will load when visible)

図の流れを順序リストで書き直すと、次の通りです。

  1. エディタで script.sh を作成する
  2. 先頭に shebang #!/bin/bash を書く
  3. chmod +x script.sh で実行権限を付与する
  4. ./script.sh または bash script.sh で実行する
  5. シェルが 1 行ずつコマンドを解釈・実行する

ファイルを作っただけでは実行できず、chmod +x で実行ビットを立てる必要があります。学習中は権限を気にせず bash script.sh という呼び方でも動かせます。

最小の例

ターミナル

# greet.sh #!/bin/bash name="Linux" echo "Hello, $name"

実行すると次のように出力されます。

ターミナル

$ bash greet.sh Hello, Linux

変数 name に値を入れ、$name で展開しています。これだけで「変数を持つプログラム」として動いており、後続レッスンで if や for を組み合わせれば本格的な自動化ツールになります。

シェルスクリプトを書くべき場面

用途シェルスクリプトが向く理由
バックアップtar や rsync を並べるだけで完結する
ログ集計grep, awk, sort, uniq とパイプで一直線に書ける
デプロイ補助rsync, ssh, systemctl などコマンドを順番に呼ぶだけ
環境構築apt や pip を順番に呼ぶインストールスクリプト
サーバー監視curl の戻り値を if で見て通知を飛ばす

逆に「複雑なデータ構造を扱う」「JSON を本格的に処理する」「長期保守する大規模ツール」になると、Python など別言語の方が読みやすくなります。シェルは 100 行を超えたら設計を見直すサインです。

短いコマンドの並びはシェルスクリプトに、複雑なロジックや構造体は Python や Go に、と切り分けて考えると現場でハマりにくくなります。最初から完璧な分業を狙うよりも「30 分以内に書ける範囲を bash で」が現実的な目安です。

実行と確認

ターミナル

# 実行権限を付けて実行 chmod +x greet.sh ./greet.sh # シェルを明示して実行 bash greet.sh

shebang が #!/bin/bash のときは結果的に同じ出力になりますが、本質的には別物です。./greet.sh は shebang のインタプリタが使われる上に実行権限(chmod +x)が必須です。一方 bash greet.sh は実行権限が不要で、shebang の内容に関係なく必ず bash が使われます。shebang を #!/bin/sh に変えた場合などは挙動が変わる点に注意してください。

スクリプトを保存するときは Unix 改行コード (LF) で保存してください。Windows の CRLF が混じると $'\r': command not found のような不可解なエラーが出て初学者がよくハマります。エディタの設定で LF を明示しておくのが安全です。

このコースで扱う範囲

本章では次の通り順番に学んでいきます。

  • 変数と引数 ($1, $2, $#)
  • 条件分岐 if, テスト式 [[ ... ]]
  • ループ処理 for, while
  • 関数の定義と再利用
  • それらを組み合わせた実践スクリプト

ここで学ぶ内容は、CI/CD パイプライン、Docker の entrypoint、Kubernetes の init コンテナ、ホビーで触る Raspberry Pi など、ほぼあらゆる Linux 環境でそのまま使えます。

この章のポイント

ここまでの要点 スクリプト = コマンドの並びをファイル化。shebang #!/bin/bash + chmod +x + 実行。Unix LF 改行で保存、CRLF は避ける。100 行超えたら別言語を検討。

まとめ

  • シェルスクリプトはコマンドの並びをファイルにまとめた自動化の道具
  • 先頭の shebang #!/bin/bash でインタプリタを指定する
  • chmod +x + ./script.sh、または bash script.sh で実行する
  • 30 分で書ける程度のタスクとの相性が抜群
  • 本章で変数、if、ループ、関数まで一気に押さえる
  • 複雑な処理が必要になったら Python など別言語への移行も検討する
  • まずは手作業の繰り返しを 1 つスクリプト化することから始めると身につきやすい

次のレッスン

次は 変数と引数 で、シェルスクリプトの基本と、作成・実行するための概念について解説します を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. シェルスクリプト入門 の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. シェルスクリプト入門 とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

課題

  1. echo で Hello, Shell を出力する

ヒント

script.sh
script.sh
学習モード
script.sh
ターミナル出力