シェルスクリプトでは、よく条件式を使用してプログラムのフローを制御します。
条件式は主に if 文やwhile文、until 文で利用されます。
条件式にはさまざまな種類があり、数値の比較、文字列の比較、ファイルの存在確認など、さまざまな操作を行うことができます。以下に、代表的な条件式を紹介します。
数値の比較には、test コマンドや[](角括弧)を使用します。以下は、主な比較演算子です。
以下にスクリプトの例を示します。このスクリプトは、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
ファイルの属性や状態を確認するための条件式もあります。主な演算子は以下の通りです。
-
x:実行可能である(Executable)以下にスクリプトの例を示します。このスクリプトは、指定したファイルが存在するかどうかを確認し、結果に応じてメッセージを表示します。
#!/bin/bash
file="/path/to/file"
if [ -e "$file" ]; then
echo "File exists"
else
echo "File does not exist"
fi
条件式の中で複数の条件を組み合わせるためには、論理演算子を使用します。
以下にサンプルスクリプトを示します。このスクリプトは、数値(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
シェルスクリプトにおける条件式は、プログラムのフローを制御するために不可欠です。
数値の比較、文字列の比較、ファイルの属性確認など、さまざまな条件式を使いこなすことで、より柔軟なスクリプトを書くことができます。
基本的な条件式の使い方を理解し、実際のスクリプトに活用してみてください。