为什么-d对空变量返回true

雷·萨利米

假设我尚未设置环境变量MY_DIR。然后我这样做:

% if [ -d $MY_DIR ]; then
>  echo WHAT?
> fi
WHAT?

我不明白 如果环境变量不存在,为什么-d返回TRUE?

切普纳

不带引号的单词拆分会导致空字符串完全消失,结果命令为[ -d ]单个非空参数(]出于对参数进行计数的目的而忽略)使[成功。[ <word> ]被解释为[ -n <word> ],它测试<word>不为空。[ -d ]读取为,[ -n -d ]并且总是成功,因为-d它不是一个空字符串。

使用引号。

if [ -d "$MY_DIR" ]; then  # when unset, equivalent to [ -d "" ] with two arguments

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章