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