Shellスクリプトで「特定の条件に応じて処理を変えたい」ときには、条件分岐(if文)を使います。たとえば「数値が大きければ合格、小さければ不合格」といった分岐処理が可能になります。今回はif文の基本構文と使い方を体験しながら学んでいきましょう。
Shellの基礎知識
🟡 Shell の基礎知識(入門編)
📌 「動かす楽しさ」を最短で体感!Shellの第一歩をここから。
├─【Shell入門①】VSCode+WSLでShellを始めよう!
├─【Shell入門②】echoで文字を表示してみよう
├─【Shell入門③】変数を使って計算しよう
├─【Shell入門④】条件分岐(if文)で処理を分けよう
├─【Shell入門⑤】ループ処理(for文)を使ってみよう
├─【Shell入門⑥】関数で処理をまとめてみよう
└─【Shell入門⑦】アンケート集計スクリプトを作ってみよう
🟡 Shell の基礎知識(基礎編)
📌 条件分岐やループなど、実務で通用する基本操作を網羅。
🟡 Shell の基礎知識(実践編)
📌 現場レベルの自動化スクリプトを実装しながら学ぶ実戦形式。
条件分岐(if文)の基本構文を覚えよう
処理を分ける判断材料となる「条件分岐」は、Shellスクリプトの中でも非常に重要な要素です。今回は、最も基本的な if文の書き方と考え方を学んでいきましょう。なお、今回もスクリプトファイルを使って実行しますが、VSCodeでファイルを作っても、ターミナルで直接書いて試しても大丈夫です。
if文とは?条件によって処理を分ける仕組み
たとえば「スコアが80点以上なら合格、それ以外は不合格」など、条件によって動きを変えたい場面があります。そんなときに使うのが if文です。


条件式の真偽によって、特定の処理を実行するかどうかを制御できるため、スクリプトをより柔軟に動かすことができるようになります。
if〜then〜fi の基本構文を覚えよう
Shellのif文は、「if 条件 then 処理 fi」という形式で書きます。最後に「fi」で締めるのがポイントです。
score=85
if [ $score -ge 80 ]; then
echo "合格です"
fi
出力結果:
合格です


この基本形をベースに、「条件が成り立つときだけ実行する処理」を少しずつ組み立てていくことになります。
実践:数値によって処理を切り替えてみよう
ここでは、実際に変数の数値を使って処理を分けてみましょう。if文がどのように条件を判定し、対応する処理を実行するのかを体験できます。今回は「点数が100以上かどうか」で条件分岐してみます。
変数の値が100以上かどうかを判定する
まずは変数にスコアを代入して、そのスコアが100以上なら「満点」と表示する処理を試してみましょう。
score=100
if [ $score -ge 100 ]; then
echo "満点です!"
fi
出力結果:
満点です!


このように、条件が「true(真)」になった場合にだけ then の中の処理が実行されます。
elseを使って「そうでない場合」もカバーする
次は、100点未満の場合に別のメッセージを表示するようにしてみます。Shellでは else を使うことで「条件に合わないとき」の処理も書けます。
score=80
if [ $score -ge 100 ]; then
echo "満点です!"
else
echo "まだ伸びしろがあります!"
fi
出力結果:
まだ伸びしろがあります!


このように、条件の分岐によって実行内容を切り替えることで、より実用的なスクリプトに近づいていきます。
if文でよくあるつまずきポイント
if文はシンプルな構文ですが、記号の使い方やスペースのルールに独特のクセがあります。ここでは初心者がよくハマるポイントを解説し、エラーを未然に防げるようにします。
[ 条件 ] の書き方とスペースに注意
Shellのif文では、条件式を角カッコ [ ] で囲みます。このとき、カッコと中身の間に必ずスペースを入れる必要があります。
if [ $score -ge 80 ]; then ← OK
if [$score -ge 80 ]; then ← NG
if [ $score -ge 80]; then ← NG


また、if文を閉じる「fi」も忘れると「構文エラー」になるので、毎回セットで書く癖をつけておきましょう。
数値判定と文字列判定の違いを知ろう
Shellでは「数値」と「文字列」で判定方法が異なります。以下の表を参考に、使い分けを意識しましょう。
用途 | 記号 | 例 |
---|---|---|
数値の比較 | -eq, -ne, -gt, -lt, -ge, -le | [ $a -ge 100 ] |
文字列の比較 | =, != | [ "$name" = "BePro" ] |


判定がうまくいかない場合は「数値と文字列を間違えていないか?」をまず疑ってみるのがポイントです。
次回に向けたステップアップ
if文の基本構文と使い方がわかったことで、Shellスクリプトの世界が一気に広がりました。次は、処理を繰り返す「ループ処理」に挑戦し、if文と組み合わせて使えるようになっていきましょう。
ループ処理と組み合わせて使ってみよう
条件分岐(if文)は、for文やwhile文と組み合わせることで、より強力なスクリプトを作ることができます。「繰り返しながら条件をチェックする」といった処理が可能になり、日常業務の自動化にも役立ちます。


次の記事では、for文の基本的な書き方と使いどころをわかりやすく体験していきます。
基礎知識で条件分岐のバリエーションを学びたい方へ
さらに深く条件分岐を理解したい方には、基礎知識シリーズの以下の記事もおすすめです。case文や複雑な条件の書き方など、より柔軟な分岐処理が身につきます。


▶ 続きはこちら:Shell入門:ループ処理(for文)を使ってみよう