カテゴリ: Linux 更新日: 2026/04/05

Linuxの「[ ]」とは?testコマンド条件式を初心者向けにわかりやすく解説【bash・zsh・シェルスクリプト入門】

Linuxの「[ ]」とは?testコマンド条件式
Linuxの「[ ]」とは?testコマンド条件式

先生と生徒の会話形式で理解しよう

生徒

「Linuxのシェルスクリプトでよく見る [ ] って何ですか?」

先生

「それは条件をチェックするための書き方で、実は test コマンドなんです。」

生徒

「えっ、コマンドなんですか?記号だと思ってました!」

先生

「見た目は記号ですが、中身はコマンドです。ファイルの存在確認や文字列比較などでよく使います。」

生徒

「シェルスクリプトを書くなら必須ですか?」

先生

「はい、とても重要です。基本からゆっくり覚えていきましょう。」

1. Linuxの「[ ]」とは?testコマンドの基本

1. Linuxの「[ ]」とは?testコマンドの基本
1. Linuxの「[ ]」とは?testコマンドの基本

Linuxの「[ ]」は、条件式を評価するための書き方で、正式には test コマンドの別の表現です。読み方はtest(テスト)コマンドといいます。

つまり、次の2つは同じ意味になります。


test 1 -eq 1
true

[ 1 -eq 1 ]
true

Linuxのシェルであるbash(バッシュ)やzsh(ゼットシェル)では、このように条件判定を行い、処理を分岐させることができます。プログラミングでいうif文の条件に使われる重要な機能です。

2. なぜ「[ ]」が使われるのか

2. なぜ「[ ]」が使われるのか
2. なぜ「[ ]」が使われるのか

初心者の方は、なぜわざわざ角括弧を使うのか疑問に思うかもしれません。これはシェルスクリプトを読みやすくするための工夫です。

例えば、条件式が長くなったときに [ ] で囲むことで、どこが条件なのか一目で分かります。また、他のプログラミング言語と似た見た目になるため、理解しやすくなります。

ただし注意点として、角括弧の前後には必ずスペースが必要です。これを忘れるとエラーになります。

3. 数値比較の条件式

3. 数値比較の条件式
3. 数値比較の条件式

Linuxのtestコマンドでは、数値の比較ができます。よく使う比較演算子は次の通りです。

  • -eq 等しい
  • -ne 等しくない
  • -gt より大きい
  • -lt より小さい

a=10

if [ $a -gt 5 ]; then
    echo "5より大きい"
fi
5より大きい

このように数値を比較して条件分岐することで、処理を柔軟に変えることができます。Linuxのシェルスクリプトでは非常によく使われる基本操作です。

4. 文字列比較の条件式

4. 文字列比較の条件式
4. 文字列比較の条件式

文字列の比較も簡単に行えます。文字列とはテキストのことです。


name="linux"

if [ "$name" = "linux" ]; then
    echo "一致しました"
fi
一致しました

文字列を扱うときは、ダブルクォーテーションで囲むのがポイントです。これにより空白や特殊文字があっても安全に比較できます。

5. ファイルの存在チェック

5. ファイルの存在チェック
5. ファイルの存在チェック

Linuxのtestコマンドは、ファイルの状態を確認するのにも使われます。例えば、ファイルが存在するかどうかをチェックできます。


if [ -f test.txt ]; then
    echo "ファイルが存在します"
fi
ファイルが存在します

主なオプションは以下の通りです。

  • -f 通常ファイルか確認
  • -d ディレクトリか確認
  • -e 存在するか確認

シェルスクリプトでは、ファイルの有無によって処理を変えることが多いため、非常に重要な使い方です。

6. 論理演算子で条件を組み合わせる

6. 論理演算子で条件を組み合わせる
6. 論理演算子で条件を組み合わせる

複数の条件を組み合わせることもできます。これを論理演算といいます。


a=10

if [ $a -gt 5 ] && [ $a -lt 20 ]; then
    echo "範囲内です"
fi
範囲内です

よく使う論理演算子は次の通りです。

  • && かつ
  • || または

これにより、より複雑な条件を作ることができます。

7. 「[[ ]]」との違い

7. 「[[ ]]」との違い
7. 「[[ ]]」との違い

Linuxでは [ ] の他に [[ ]] という書き方もあります。これはbashやzshで使える拡張機能です。

[[ ]] の方がエラーになりにくく、安全に条件を書けるため、最近はこちらがよく使われます。


name="linux"

if [[ $name == linux ]]; then
    echo "OK"
fi
OK

初心者の方はまず [ ] を理解し、その後に [[ ]] を覚えるとスムーズです。

8. よくあるエラーと注意点

8. よくあるエラーと注意点
8. よくあるエラーと注意点

初心者がつまずきやすいポイントを紹介します。

  • スペースを忘れるとエラーになる
  • 変数はダブルクォーテーションで囲む
  • 条件式の書き方を間違えやすい

# NG例
if [ $a-gt 5 ]; then
    echo "エラー"
fi
bash: [: missing `]'

このようなエラーはスペース不足が原因です。Linuxコマンドはスペースが非常に重要なので注意しましょう。

まとめ

まとめ
まとめ

Linuxのシェルスクリプトにおける角括弧は、単なる記号ではなく、条件判定を行うための重要な仕組みであり、testコマンドの別表現として機能します。bashやzshといったシェル環境では、この書き方を用いることで、数値比較や文字列比較、さらにはファイルの存在確認など、多くの処理を柔軟に制御することができます。特にLinux初心者やシェルスクリプト入門者にとっては、この角括弧の理解が基本であり、ここをしっかりと押さえることで、より高度なスクリプト作成へとステップアップすることが可能になります。

まず基本として押さえておきたいのは、角括弧はtestコマンドと同じ意味を持つという点です。つまり、条件式を評価し、その結果によって処理の分岐を行う役割を担っています。例えばif文と組み合わせることで、条件に応じた処理を実現できます。このような条件分岐は、プログラミングにおいて非常に重要な概念であり、Linuxのシェルスクリプトでも頻繁に利用されます。

また、角括弧を使う際にはスペースの扱いが非常に重要です。角括弧の内側や外側には必ずスペースを入れる必要があり、これを怠るとエラーが発生します。Linuxコマンドはスペースによって構文が区切られるため、このルールを守ることが正しく動作させるための基本となります。

数値比較では、等しいや大きい小さいといった条件を指定することができ、シェルスクリプトのロジック構築に欠かせません。さらに文字列比較では、変数の内容が一致しているかどうかを確認することができ、ユーザー入力の判定や設定値の確認などに活用されます。ここで重要なのは、文字列をダブルクォーテーションで囲むことで、安全に比較できるという点です。

ファイルの存在チェックも実務で非常に重要な処理です。指定したファイルが存在するかどうかによって処理を分岐することで、エラーを防いだり、適切な処理を実行することができます。特にシステム運用や自動化スクリプトでは、この機能が頻繁に利用されます。

さらに論理演算子を使うことで、複数の条件を組み合わせることが可能になります。これにより、より複雑で実用的な条件分岐を実現できます。例えば、ある数値が特定の範囲内にあるかどうかを判定する場合などに役立ちます。

近年では、より安全で高機能な書き方として二重角括弧も利用されています。これはbashやzshで使える拡張構文であり、エラーを減らしつつ柔軟な条件式を書くことができます。ただし、まずは基本となる角括弧の使い方を理解することが重要です。

初心者がよくつまずくポイントとしては、スペースの不足や条件式の書き間違いが挙げられます。これらは一見小さなミスに見えますが、実行時エラーの原因となるため注意が必要です。正しい構文を身につけることで、安定したスクリプトを作成できるようになります。

サンプルプログラムで理解を深める


a=15
name="linux"
file="test.txt"

if [ $a -gt 10 ] && [ "$name" = "linux" ] && [ -f $file ]; then
    echo "すべての条件を満たしています"
else
    echo "条件を満たしていません"
fi
すべての条件を満たしています

このサンプルでは、数値比較、文字列比較、ファイル存在確認を組み合わせて条件判定を行っています。このように複数の条件を組み合わせることで、実務で役立つ高度なシェルスクリプトを作成することが可能になります。

先生と生徒の振り返り会話

生徒

Linuxの角括弧は記号ではなくてコマンドの一種なんですね。今までただの書き方だと思っていました。

先生

その通りです。testコマンドとして条件を評価しているので、シェルスクリプトの基本中の基本になります。

生徒

数値比較や文字列比較だけでなく、ファイルの存在確認までできるのは便利ですね。

先生

はい。実際の開発や運用ではファイルチェックはとても重要なので、しっかり覚えておきましょう。

生徒

スペースを忘れるとエラーになるのが少し怖いですが、慣れれば大丈夫そうです。

先生

最初は誰でも間違えますが、正しい書き方を繰り返し使うことで自然と身につきます。

生徒

二重角括弧もあると聞いたので、次はそれも学びたいです。

先生

いいですね。基本を理解した上で応用に進むことで、より安全で効率的なスクリプトが書けるようになります。

関連記事:
カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
IPv4とは?初心者でもわかるIPアドレスの基本と通信のルール
更新記事
New2
Linux
Linuxでaproposコマンドを使いこなす!マニュアル検索の初心者向け完全ガイド
新規投稿
New3
基本情報技術者試験
URLとは?初心者でもわかるWebリンクの仕組みと役割をやさしく解説!
更新記事
New4
基本情報技術者試験
ブロードキャストアドレスとは?初心者でもわかるIPアドレス全体への一斉送信のしくみ
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
329
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.5
Java&Spring記事人気No5
基本情報技術者試験
パケットとは?初心者にもわかりやすくネットワークの仕組みをやさしく解説!
No.6
Java&Spring記事人気No6
基本情報技術者試験
IMAP
125
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.7
Java&Spring記事人気No7
基本情報技術者試験
SMTP
124
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!
No.8
Java&Spring記事人気No8
基本情報技術者試験
CGI
114
CGIとは?初心者でもわかるWebとプログラムのつながりを解説!