27231
シェルスクリプトをみていると、

```

    if [ "x$var" = "x" ]; then
        : ...
    fi
    
```

のような記述をしばしば見かけます。

`[ -z "$var" ]` や `[ "$var" = "" ]` ならばまだわかりますが、 `x` をわざわざはさむ理由は何ですか？
CC BY-SA 3.0
2016-06-30T14:03:52.367
27226
2016-07-14T19:20:29.013
754
question
sh
if 文で [ "x$var" = "x" ] とする理由は？
[Bashのよくある間違い](https://yakst.com/ja/posts/2929)  
の 4. を参照ください。  
var=-f などの場合、エラーとなるシェルがある(あった)という理由だそうです。
CC BY-SA 3.0
2016-06-30T16:40:20.393
27231
2016-06-30T16:40:20.393
4603
27226
answer
補足で、 POSIX のシェルでは、引数の数で処理が分岐するので、単項演算子や二項演算子がそれ単体で使われる test コマンドであるならば、今回の x
escape (みたいなもの) はいらない様子です。

<http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html>
CC BY-SA 3.0
2016-07-14T18:56:20.093
27634
2016-07-14T19:20:29.013
2016-07-14T19:20:29.013
754
754
27226
answer