if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
这个 shell 脚本, if 语句, 是想探测环境变量是否为空, 为啥不直接
if [ "$KAFKA_HEAP_OPTS" = "" ]
而是在前面加了个 x
1
lcdtyph 2020-09-12 17:10:46 +08:00 via iPhone
为了兼容性,一些 shell 的实现无法正确处理 [ -n = "" ] 这种情况,当你测试的那个变量个是比较特殊(比如"-n")在某些 shell 下会出错
|
2
wd 2020-09-12 17:20:02 +08:00 via iPhone
陈年陋习 老版本(很老的那种,我感觉我很早就看到这个写法了) bash 可能会有问题吧
|
3
love 2020-09-12 20:26:12 +08:00
不是应该 [[ -z $a ]] && echo empty || echo notempty
吗 |
5
SiliusMo 2020-09-12 22:40:49 +08:00 via Android
前缀是为了防止一些 shell 在变量未定义的情况下省略这个变量而不是替换为空字符串,从而使代码变为 `if [ = x ]` 。这样会报 参数过少 的错误。
然而把变量都用双引号括起来已经解决了这个问题…所以楼主说的第二种情况是完全可以的,这里加前缀 x 应该是多余的。 |