シェルスクリプト(特に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" ] |
使用例
a=5b=10
if [ "$a" -lt "$b" ]; then echo "$a は $b より小さい"else echo "$a は $b 以上です"fiこのように、数値の大小比較を用いることで、動的な分岐を簡単に実装できます。例えば、ユーザーの入力に応じて条件を変える処理などに応用できます。
2. 文字列の比較演算子
文字列を比較する際には、= や != のほか、辞書順での比較を行う < や > などの演算子も利用できます。[[ ]] を使うことで、より強力な比較が可能となります。
| 演算子 | 意味 | 使用例 |
|---|---|---|
| = | 等しい | [ "$str1" = "$str2" ] |
| != | 等しくない | [ "$str1" != "$str2" ] |
| < | 辞書順で小さい | [[ "$str1" < "$str2" ]] |
| > | 辞書順で大きい | [[ "$str1" > "$str2" ]] |
※ 注意:< および > の比較は [[ ]] 内でのみ機能します。通常の [ では文法エラーとなります。
使用例
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" ] |
使用例
file="sample.txt"
if [ -e "$file" ]; then echo "$file は存在します" if [ -s "$file" ]; then echo "$file は空ではありません" else echo "$file は空です" fielse echo "$file は存在しません"fiこうしたファイルの比較演算子は、ログファイルのチェックや設定ファイルの存在確認、自動バックアップスクリプトなど、多くの実用的な場面で役立ちます。
比較演算子まとめ
シェルスクリプトにおける比較演算子は、スクリプトの制御構造を支える重要な要素です。数値、文字列、ファイルといった異なるタイプのデータに応じて、適切な演算子を使い分けることが求められます。今回紹介した演算子を理解し活用することで、より柔軟なスクリプトを書くことが可能になります。
また、これらの比較演算子は if 文だけでなく、while や until、case 文など他の制御構造とも組み合わせて使うことができます。シェルスクリプトを学ぶ上で、比較演算子は避けて通れない基本中の基本です。
今後さらに高度なスクリプトを書いていく際にも、エラー処理や複雑な分岐処理の中で比較演算子の知識が役立つ場面は多くあります。繰り返し練習し、身につけていきましょう。
以上で本記事の解説を終わります。
よいITライフを!