完全に間違った書き方
hoge.sh
# !/bin/bash
hoge="hoge"
if [${hoge} eq "hoge"]
echo "do something"
else if [${hoge} eq "fuga"]
echo "do something else"
else
echo "do nothing"
正しい書き方
hoge.sh
# !/bin/bash
hoge="hoge"
if [ "${hoge}" = "hoge" ] ; then
echo "do something"
elif [ "${hoge}" = "fuga"] ; then
echo "do something else"
else
echo "do nothing"
fi
間違いポイント1 fiがない
これは基本だがたまにやる。
間違いポイント2 [はコマンド
[ はコマンドなので、前後にはスペースが必要
間違いポイント3 ;thenがない
たまに忘れる
間違いポイント4 elif
else ifではなくelif。そしてこちらも;thenが必要
間違いポイント5 eq
eqではなく-eqが正しいのと、これは数値比較に使うもので、文字列比較には-eqではなく=を使う。
間違いポイント6 ${hoge}
条件式で使う変数にはダブルクォーテーションをつける
変数が文字列と認識されず、"unary operator expected"というエラーが環境によっては出る。