シェル(主にbash)のスクリプトをたまーに書きます。シェルスクリプトの構文は全然憶えられないし、しょっちゅう間違います。そんなことを何度かこのブログに書いたことがあります。
今日も間違いました。
if [ "$1" = ""]; then echo "Do Something" fi
これはうまく動きません。
空白を1つ足してやる必要があります。
if [ "$1" = "" ]; then echo "Do Something" fi
左ブラケット '[' は、testというコマンドの別名で、[ "$1" = ""] は、次のように分解されます。
- 第1引数:"$1"
- 第2引数:=
- 第3引数:""]
これはうまくなくて、次のようなコマンドラインを必要とするわけです。
- 第1引数:"$1"
- 第2引数:=
- 第3引数:""
- 第4引数:]
構文が自然になるように記号'['を使ったのでしょうが、所詮デリミタではないのでこんなことになります。まったくシェルってば…