それは、test
コマンドにおける比較の書き方。
# 一般人 if [ "$x" = "0" ]; then
# プロっぽい人 if [ "x$x" = "x0" ]; then
へんなプレフィックスをつける理由
歴史的経緯による。
古臭いシェルを使っている場合、変数 $x
が空の場合や、-z
等の test
コマンドで有効なオプションをぶち込むと
構文エラーとなるため、コードのポータビリティーを高めるために、過去はこのようなハックが必要だったとのこと。
ちなみに、現代のシェルはそんな誤作動の心配をする必要がないらしい。 場合によっては、原理主義者とか変なヤツ扱いされる恐れもありそう (要出典)。