2017-06-20 185 views
-3

意思,我发现这个计划,我想不通这if说法是什么Perl的命令与-d

if(!(-d "$string_value")) 

string_value可能有/default/main/folder1

回答

0

我不认为这是有效的。 -d运算符正在测试路径字符串是否是Bash或Perl中的目录,但我不知道Groovy中的文件运算符。这看起来像Perl code

1

这看起来非常像perl语法,给出了括号。如果是这样,(-d $ string_value)会检查$ string_value是否是一个目录。如果$ string_value是!,if语句会执行! (不)目录。

0

从的perldoc

-d检查文件是否是一个目录。

!它是符号一元运算符。它执行逻辑否定,即“不”。

如果$string_value是一个目录,它会给结果为-d $string_value为真(1)。但是你正在检查满足条件是否应该是错误的。这意味着!1所以如果它不是一个目录块将被执行。

可以写成unless(-d $string_value)

+0

的问题是,该语句返回不同的值(真/假)为同一$ STRING_VALUE,我想不通这是为什么。什么是使其成为目录的标准?如果前后有空格可能会导致问题? – Bruce227

+0

或者可能长度太长或$ string_value中的特殊字符? – Bruce227

+0

我不确定字符串的长度是否过长。但是具有特殊字符的字符串使用'quotemeta'来转义所有特殊字符 – mkHun