シェルで三項演算子の書き方

シェルで三項演算子の書き方

シェルスクリプトで三項演算子を使用する方法について説明します。
シェルスクリプトでは、特に bash などのシェルで三項演算子のような構文を使いたい場合、expr コマンドや ... 構文を利用することができます。
bash には直接的な三項演算子はありませんが、代替の方法で同様の機能を実現できます。

1. expr コマンドを使用する方法

expr コマンドは、条件に基づいて異なる値を返すために使われます。
以下に expr コマンドを用いた三項演算の例を示します。

#!/bin/bash

a=5
b=10
result=$(expr $a \> $b)
if [ $result -eq 1 ]; then
  echo "a is greater than b"
else
  echo "a is not greater than b"
fi

このスクリプトでは、expr コマンドを使って条件式を評価し、その結果に基づいてメッセージを表示しています。
expr $a \> $b は a が b より大きいかどうかを判定します。

2. [括弧の構文を使用する方法

bash では、[括弧の構文を使用して条件式を評価し、変数に結果を格納する方法があります。
以下にその例を示します。

#!/bin/bash

a=5
b=10
result=""

if [[ $a -gt $b ]]; then
  result="a is greater than b"
else
  result="a is not greater than b"
fi

echo $result

このスクリプトでは、 $a -gt $b を使用して a が b より大きいかどうかを判定し、その結果に基づいて result 変数に適切なメッセージを格納しています。

3. bash の && と || を使った短縮形

条件に基づいて簡単な処理を行う場合、&& と || を組み合わせて三項演算子のような機能を実現することもできます。

#!/bin/bash

a=5
b=10

[[ $a -gt $b ]] && echo "a is greater than b" || echo "a is not greater than b"

このスクリプトでは、 $a -gt $b が真であれば、echo "a is greater than b" が実行され、偽であれば echo "a is not greater than b" が実行されます。
&& は前のコマンドが成功したときに次のコマンドを実行し、|| は前のコマンドが失敗したときに次のコマンドを実行します。

これらの方法を用いることで、シェルスクリプトでも条件に基づいた異なる処理を実現することができます。