シェルスクリプトでは、よく条件式を使用してプログラムのフローを制御します。
条件式は主に if 文やwhile文、until 文で利用されます。
条件式にはさまざまな種類があり、数値の比較、文字列の比較、ファイルの存在確認など、さまざまな操作を行うことができます。以下に、代表的な条件式を紹介します。
目次
数値の比較
数値の比較には、test コマンドや[](角括弧)を使用します。以下は、主な比較演算子です。
- -eq:等しい(Equal)
- -ne:等しくない(Not Equal)
- -lt:より小さい(Less Than)
- -le:以下(Less Than or Equal)
- -gt:より大きい(Greater Than)
- -ge:以上(Greater Than or Equal)
以下にスクリプトの例を示します。このスクリプトは、num1 が num2 より小さいかどうかを判定し、判定結果に基づき異なる出力を行います。
#!/bin/bash
num1=10
num2=20
if [ $num1 -lt $num2 ]; then
echo "$num1 is less than $num2"
else
echo "$num1 is not less than $num2"
fi
文字列の比較
以下は、主な文字列比較演算子です。
=
:等しい(Equal)!=
:等しくない(Not Equal)-z
:空である(Zero Length)-n
:空でない(Non-Zero Length)
以下にスクリプトの例を示します。このスクリプトは、str1とstr2が等しいかどうかを比較し、結果に応じたメッセージを表示します。
#!/bin/bash
str1="hello"
str2="world"
if [ "$str1" = "$str2" ]; then
echo "Strings are equal"
else
echo "Strings are not equal"
fi
ファイルの属性の確認
ファイルの属性や状態を確認するための条件式もあります。主な演算子は以下の通りです。
- -e:ファイルが存在する(Exists)
- -f:通常のファイルである(Regular File)
- -d:ディレクトリである(Directory)
- -r:読み取り可能である(Readable)
- -w:書き込み可能である(Writable)
-
x:実行可能である(Executable)
以下にスクリプトの例を示します。このスクリプトは、指定したファイルが存在するかどうかを確認し、結果に応じてメッセージを表示します。
#!/bin/bash
file="/path/to/file"
if [ -e "$file" ]; then
echo "File exists"
else
echo "File does not exist"
fi
論理演算子
条件式の中で複数の条件を組み合わせるためには、論理演算子を使用します。
- -a:論理 AND(両方の条件が真である場合)
- -o:論理 OR(いずれかの条件が真である場合)
- !:論理 NOT(条件が偽である場合)
以下にサンプルスクリプトを示します。このスクリプトは、数値(num)が 5 より大きく、特定のファイルが存在するかどうかを判定します。
#!/bin/bash
num=10
file="/path/to/file"
if [ $num -gt 5 -a -e "$file" ]; then
echo "Number is greater than 5 and file exists"
else
echo "Condition not met"
fi
まとめ
シェルスクリプトにおける条件式は、プログラムのフローを制御するために不可欠です。
数値の比較、文字列の比較、ファイルの属性確認など、さまざまな条件式を使いこなすことで、より柔軟なスクリプトを書くことができます。
基本的な条件式の使い方を理解し、実際のスクリプトに活用してみてください。