2017-06-20 47 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