Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

コロンの使用法

id:satob:20051226 のなかださんのコメント、

なかだ 『:は${VAR=expr}と組み合わせるのがidiomでしょう。
: ${PARAM1=foobar} ${PARAM2=hoge}』

の話。すなわち、Colon と Dollar Sign と Opening/Closing Brace と Equals の使いかた(Google は記号をクエリ文字列に使えないのが弱点だなぁ)。

  • ${PARAM1=foobar} は「PARAM1 が undef (unset?) なら foobar を代入、そうでなければ何もしない」の意味。
  • そのまま ${PARAM1=foobar} だけの行を書くと、シェルに「foobar: command not found」とか言われるので、シェルスクリプトでは困る *1
  • セミコロンを置いておけば、実行されるのは「:」コマンドなので、普通に実行されるだけで何も起こらず、シェルも文句を言わない
  • その上、引数にいくらでも上記の式を書ける

ということ。
参考: http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230580/

*1:$ で始まってるってことは、その変数の中身をそのままそこに書いたのと同じだから