Categories: shellscript

シェルスクリプトにおける条件式の書き方を紹介、比較演算子や論理演算子など

シェルスクリプトでは、よく条件式を使用してプログラムのフローを制御します。

条件式は主に 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

まとめ

シェルスクリプトにおける条件式は、プログラムのフローを制御するために不可欠です。

数値の比較、文字列の比較、ファイルの属性確認など、さまざまな条件式を使いこなすことで、より柔軟なスクリプトを書くことができます。

基本的な条件式の使い方を理解し、実際のスクリプトに活用してみてください。

Haruoka