Shellの基礎知識(入門編)

【Shell入門】条件分岐(if文)で処理を分けよう

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文です。

ルーキー
なんとなく使えたら便利そうだけど、Shellでもそんなことできるんだね!
もちろん!Shellでも条件分岐はバリバリ使えるよ。シンプルだけど、書き方にはちょっとしたクセがあるから、まずは基本から確認しよう。
ビープロ

条件式の真偽によって、特定の処理を実行するかどうかを制御できるため、スクリプトをより柔軟に動かすことができるようになります。

if〜then〜fi の基本構文を覚えよう

Shellのif文は、「if 条件 then 処理 fi」という形式で書きます。最後に「fi」で締めるのがポイントです。

score=85
if [ $score -ge 80 ]; then
  echo "合格です"
fi

出力結果:

合格です

ルーキー
あれ?カッコじゃなくて、なんか角カッコっぽいの使ってる?
よく気づいたね!Shellでは [ 条件 ] という形で条件を囲むのが基本ルールなんだ。スペースの入れ方にも注意が必要だから、次のセクションで詳しく見ていこう!
ビープロ

この基本形をベースに、「条件が成り立つときだけ実行する処理」を少しずつ組み立てていくことになります。

実践:数値によって処理を切り替えてみよう

ここでは、実際に変数の数値を使って処理を分けてみましょう。if文がどのように条件を判定し、対応する処理を実行するのかを体験できます。今回は「点数が100以上かどうか」で条件分岐してみます。

変数の値が100以上かどうかを判定する

まずは変数にスコアを代入して、そのスコアが100以上なら「満点」と表示する処理を試してみましょう。

score=100
if [ $score -ge 100 ]; then
  echo "満点です!"
fi

出力結果:

満点です!

ルーキー
うおっ、ちゃんと判定されてる…!中で何が起きてるかはまだピンとこないけど、動いてるのはすごい!
それでOK!最初は「動いた」が一番大事。あとから少しずつ理解していこうね。
ビープロ

このように、条件が「true(真)」になった場合にだけ then の中の処理が実行されます。

elseを使って「そうでない場合」もカバーする

次は、100点未満の場合に別のメッセージを表示するようにしてみます。Shellでは else を使うことで「条件に合わないとき」の処理も書けます。

score=80
if [ $score -ge 100 ]; then
  echo "満点です!"
else
  echo "まだ伸びしろがあります!"
fi

出力結果:

まだ伸びしろがあります!

ルーキー
こういうの見たことある!「もし〜じゃなければ〜する」ってヤツだよね!
そうそう、それが「else」ってやつ。if文とセットで使うと、どっちに転んでも動くスクリプトが作れるようになるんだ。
ビープロ

このように、条件の分岐によって実行内容を切り替えることで、より実用的なスクリプトに近づいていきます。

if文でよくあるつまずきポイント

if文はシンプルな構文ですが、記号の使い方やスペースのルールに独特のクセがあります。ここでは初心者がよくハマるポイントを解説し、エラーを未然に防げるようにします。

[ 条件 ] の書き方とスペースに注意

Shellのif文では、条件式を角カッコ [ ] で囲みます。このとき、カッコと中身の間に必ずスペースを入れる必要があります。

if [ $score -ge 80 ]; then ← OK
if [$score -ge 80 ]; then ← NG
if [ $score -ge 80]; then ← NG

ルーキー
ええっ、こんなちょっとのスペースでダメなの!?
Shellはスペースが超シビアなんだ。条件式の前後に「半角スペース」がなかったらエラーになっちゃうよ。
ビープロ

また、if文を閉じる「fi」も忘れると「構文エラー」になるので、毎回セットで書く癖をつけておきましょう。

数値判定と文字列判定の違いを知ろう

Shellでは「数値」と「文字列」で判定方法が異なります。以下の表を参考に、使い分けを意識しましょう。

用途 記号
数値の比較 -eq, -ne, -gt, -lt, -ge, -le [ $a -ge 100 ]
文字列の比較 =, != [ "$name" = "BePro" ]

ルーキー
数値は -ge で、文字列は = って…覚えるしかないのか〜
最初は使い分けがややこしいけど、何回か書いてるうちに自然と覚えるから安心してOK!
ビープロ

判定がうまくいかない場合は「数値と文字列を間違えていないか?」をまず疑ってみるのがポイントです。

次回に向けたステップアップ

if文の基本構文と使い方がわかったことで、Shellスクリプトの世界が一気に広がりました。次は、処理を繰り返す「ループ処理」に挑戦し、if文と組み合わせて使えるようになっていきましょう。

ループ処理と組み合わせて使ってみよう

条件分岐(if文)は、for文やwhile文と組み合わせることで、より強力なスクリプトを作ることができます。「繰り返しながら条件をチェックする」といった処理が可能になり、日常業務の自動化にも役立ちます。

ルーキー
なるほど…条件によって繰り返しの内容を変えられるってことか!便利そう!
その通り!次回はまさに「for文」で、繰り返し処理にトライするよ。if文と合わせて使えるようになると、世界が変わるから楽しみにしてて!
ビープロ

次の記事では、for文の基本的な書き方と使いどころをわかりやすく体験していきます。

基礎知識で条件分岐のバリエーションを学びたい方へ

さらに深く条件分岐を理解したい方には、基礎知識シリーズの以下の記事もおすすめです。case文や複雑な条件の書き方など、より柔軟な分岐処理が身につきます。

ルーキー
まずは入門シリーズをやり切ってから、あとで基礎をじっくり読むのもありだね。
うんうん、そのペースで大丈夫!今は「動いた!理解できた!」っていう成功体験を積み重ねていこう!
ビープロ

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

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Shellの基礎知識(入門編)