假设我尚未设置环境变量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] 删除。
我来说两句