我可以在 unix shell 脚本中看到以下使用的构造
[ x"$VAR" = x"VALUE" ]
代替
[ "$VAR" = "VALUE" ]
为什么?
最佳答案
因为如果变量之一为空,shell 并不总是完全表现良好。
考虑是否 $VAR
为空/空和 $VALUE
是“foo”,你的两个结构扩展为:
[ x = xfoo ]
和
[ = foo ]
后者会因为是非法构造而在某些 shell 中导致错误,而前者在任何情况下都是有效的。这在最新版本的 bash(甚至可能是旧版本的 bash)中不是问题,但这就是它的历史来源-除了偶尔会遇到遇到您情况的人感到困惑之外,几乎没有理由不这样做是为了与范围更广的 shell 。
关于shell - 为什么在 [ x"$VAR"= x"VALUE"] 中使用 'x'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093472/