シェルスクリプトの比較演算子まとめ|数値・文字列・ファイルの判定方法を解説

シェルスクリプトの比較演算子まとめ|数値・文字列・ファイルの判定方法を解説

Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:1,432 / 総アクセス数:772 views

本記事では、Bashを中心としたシェルスクリプトにおける「比較演算子」の基本と活用方法を、数値・文字列・ファイルの3分類に分けて丁寧に解説します。各演算子の意味や使用例を豊富に取り上げ、条件分岐やファイルチェックなど、日常的なスクリプト作成に欠かせない技術を身につけたい方に最適な内容です。

シェルスクリプト(特にBash)では、条件分岐やループ処理を行う際に比較演算子が頻繁に使われます。これらの演算子は、スクリプトの中で「ある値が他の値とどう違うのか」「このファイルは存在するか」「この数は条件を満たしているか」といった判断を行うために不可欠です。本記事では、シェルスクリプトにおける代表的な比較演算子とその使い方を、実例とともに詳しく解説します。初心者の方にも分かりやすいよう、基本から丁寧に紹介していきます。

1. 数値の比較演算子

数値を比較する場合には、[[[ を使用して、以下のような比較演算子を用います。これらは整数同士の比較に用いられ、文字列と混同しないよう注意が必要です。

演算子意味使用例
-eq等しい[ "$a" -eq "$b" ]
-ne等しくない[ "$a" -ne "$b" ]
-ltより小さい[ "$a" -lt "$b" ]
-le以下[ "$a" -le "$b" ]
-gtより大きい[ "$a" -gt "$b" ]
-ge以上[ "$a" -ge "$b" ]

使用例

test1.sh
a=5
b=10
if [ "$a" -lt "$b" ]; then
echo "$a$b より小さい"
else
echo "$a$b 以上です"
fi

このように、数値の大小比較を用いることで、動的な分岐を簡単に実装できます。例えば、ユーザーの入力に応じて条件を変える処理などに応用できます。

2. 文字列の比較演算子

文字列を比較する際には、=!= のほか、辞書順での比較を行う <> などの演算子も利用できます。[[ ]] を使うことで、より強力な比較が可能となります。

演算子意味使用例
=等しい[ "$str1" = "$str2" ]
!=等しくない[ "$str1" != "$str2" ]
<辞書順で小さい[[ "$str1" < "$str2" ]]
>辞書順で大きい[[ "$str1" > "$str2" ]]

※ 注意:< および > の比較は [[ ]] 内でのみ機能します。通常の [ では文法エラーとなります。

使用例

test2.sh
str1="apple"
str2="banana"
if [[ "$str1" < "$str2" ]]; then
echo "$str1$str2 より前に来ます"
else
echo "$str1$str2 より後または同じ位置です"
fi

このような文字列の比較は、ソート順の確認や、ユーザー名・ファイル名のアルファベット順の判定などに利用できます。

3. ファイルの比較演算子

ファイルやディレクトリの存在確認、属性のチェックを行うための比較演算子も多数用意されています。スクリプト内でファイルの有無や状態を確認し、適切に処理を分岐させることが可能です。

演算子意味使用例
-eファイルが存在する[ -e "file.txt" ]
-f通常ファイルである[ -f "file.txt" ]
-dディレクトリである[ -d "mydir" ]
-sファイルが空でない[ -s "file.txt" ]
-r読み取り可能[ -r "file.txt" ]
-w書き込み可能[ -w "file.txt" ]
-x実行可能[ -x "script.sh" ]

使用例

test3.sh
file="sample.txt"
if [ -e "$file" ]; then
echo "$file は存在します"
if [ -s "$file" ]; then
echo "$file は空ではありません"
else
echo "$file は空です"
fi
else
echo "$file は存在しません"
fi

こうしたファイルの比較演算子は、ログファイルのチェックや設定ファイルの存在確認、自動バックアップスクリプトなど、多くの実用的な場面で役立ちます。

比較演算子まとめ

シェルスクリプトにおける比較演算子は、スクリプトの制御構造を支える重要な要素です。数値、文字列、ファイルといった異なるタイプのデータに応じて、適切な演算子を使い分けることが求められます。今回紹介した演算子を理解し活用することで、より柔軟なスクリプトを書くことが可能になります。

また、これらの比較演算子は if 文だけでなく、whileuntilcase 文など他の制御構造とも組み合わせて使うことができます。シェルスクリプトを学ぶ上で、比較演算子は避けて通れない基本中の基本です。

今後さらに高度なスクリプトを書いていく際にも、エラー処理や複雑な分岐処理の中で比較演算子の知識が役立つ場面は多くあります。繰り返し練習し、身につけていきましょう。

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ


以上で本記事の解説を終わります。
よいITライフを!

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top