2014-02-27 35 views
0

我以爲我引用正確,但我無法弄清楚爲什麼我得到這些不同的結果。測試目錄:命令中使用的引用字符串

ls /d/Temp/test 

顯示:

textFile.txt textFile.txt.bak 

我的測試腳本是:

cd /d/Temp/test 
excludeString="-not -iwholename '*.svn*' -not -iwholename '*.bak*'" 
find -P . $excludeString -type f -name "*.*" 
echo ======================= 
find -P . -not -iwholename '*.svn*' -not -iwholename '*.bak*' -type f -name "*.*" 

,結果:

./textFile.txt 
./textFile.txt.bak 
======================= 
./textFile.txt 

這是一個引用的問題或事情其他?

回答

2

Bash不會將字符串數據解釋爲代碼,因爲這是非常不可預測的並且會導致安全漏洞。

Shellcheck正確建議使用數組來代替:

excludeParams=(-not -iwholename '*.svn*' -not -iwholename '*.bak*') 
find -P . "${excludeParams[@]}" -type f -name "*.*" 
+0

哇,我想我快要瘋了..非常感謝你 - 我從來不知道任何拼寫檢查,這提出了一個問題:爲什麼不我告訴過! :) –

相關問題