値の比較

文字列

空文字列

文字列としてゼロであることを確認する場合。

VAL="0"

if [ "$VAL" = "0" ]; then
  echo "VAL は '0' です"
else
  echo "VAL は '0' ではありません"
fi

sh シェルで文字列の大小比較を行う場合、文字列の比較は辞書順(lexicographical order)に基づいて行われる。

大小

str1="apple"
str2="banana"

if [ "$str1" \< "$str2" ]; then
  echo "$str1$str2 よりも小さいです"
elif [ "$str1" \> "$str2" ]; then
  echo "$str1$str2 よりも大きいです"
else
  echo "$str1$str2 は等しいです"
fi
注意点
  • sh シェルでは、< および > 演算子は文字列の比較に使用できるが、エスケープする必要がある (\< および \>)。 <> がシェルのリダイレクト演算子として使われるため。
  • 比較結果は辞書順で行われ、文字列の各文字のASCII値に基づいて比較されます。

複数の条件を組み合わせた例

str1="apple"
str2="banana"
str3="apple"

if [ "$str1" \< "$str2" ] && [ "$str1" = "$str3" ]; then
  echo "$str1$str2 よりも小さく、また $str3 と等しいです"
fi

数値

ゼロとの比較

数値としてゼロであることを確認する場合。

VAL=0

if [ "$VAL" -eq 0 ]; then
  echo "VAL は数値のゼロです"
else
  echo "VAL はゼロではありません"
fi