[シェルプログラミング] - ifの使い方
注意:文法
単純なミスでよくはまってしまいます。
【正しい書き方】
以下の書き方が正解。
ifの後ろに半角スペース必要
"["の後には半角スペース、"]"の前にも半角スペースが必要です。
if [ "1"="1" ]
【NG例】
以下の書き方はエラーになります。
if ["1"="1"]
注意:空文字の比較
文字列を=や!=で比較する時も同じです。この書き方自分的に違和感があるので、よく間違えます。
【NG例】
# -nは1文字以上ならTrue
RET=""
if [ -n ${RET} ]; then
echo "こっちにくる" # 空文字を比較したいなら「"」で囲わないとだめ
else
echo "こっちにこない"
fi
【正しい書き方】
# -nは1文字以上ならTrue
RET=""
if [ -n "${RET}" ]; then
echo "こっちにこない" # なんで?こっち?
else
echo "こっちにくる"
fi
# -zは0文字ならTrue
RET=""
if [ -z "${RET}" ]; then
echo "こっちにくる"
else
echo "こっちにこない"
fi
文例
見慣れていない書き方がありました。
以前は以下のように書いていたので「; then」となっていて?となりました。
if [ "1"="1" ]
then
echo "1"
else
echo "2"
fi
確かに、行数は少なくなります。こっちも見やすさの方が上なのかな
if [ "1" = "1" ]; then
echo "1"
else
echo "2"
fi
この記事が気に入ったらサポートをしてみませんか?