BASH文件测试运算符用空字符串

时间:2016-06-29 18:09:10

标签: bash

当path参数为空字符串时,BASH文件测试运算符返回什么?例如:

directory=""
# Something may or may not set "directory"
if [ -d "$directory" ]; then
    # Do something...
fi

2 个答案:

答案 0 :(得分:4)

您需要引用select * from t1 where EXISTS ( select 1 from t2 where name = 'Apple' and ( ( t1.a = t2.id AND t1.b IS NULL ) OR ( t1.b = t2.id AND t1.a IS NULL ) ) )

$directory

否则,在扩展后,您将获得等效的

if [ -d "$directory" ]; then

相当于if [ -d ]; then ,因此总是如此。 (if [ -n "-d" ]; then是非空字符串。)

答案 1 :(得分:0)

在您的示例中,该语句将产生以下测试:

if [ -d  ]; then
   ...
fi

哪个不会测试你想要的内容。

防止此类错误的可接受做法是将变量用双引号括起来,如下所示:

if [ -d "$directory" ]; then
   ...
fi