文字列の一致とif文におけるOR

そういえば文字列の一致を取る方法を知らなかった.更に条件文(test)の中でORを取る方法を知らなかった.というわけでふたつを取り入れたサンプルプログラム

for str in hoge fuga piyo
do
    if [ "$str" = "hoge" -o "$str" = "piyo" ]; then
	echo "hoge or piyo"
    else
	echo "fuga"
    fi
done

注意するのは,$strをダブルクオーテーションで囲むこと.これは$strが変数展開されたときにだぶるクォーテーションが無いと,文字列として判断してくれないからだそう

test hoge = "hoge"    # 間違った使い方
test "hoge" = "hoge"  # 正しい使い方

ORはなんと-oで条件式をくっつけられる.