我以为我的引用是正确的,但我无法理解为什么我会得到这些不同的结果。测试目录:
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
这是引用问题还是别的什么?
答案 0 :(得分:2)
Bash不会将字符串数据解释为代码,因为这非常难以预测并导致安全漏洞。
Shellcheck正确建议使用数组:
excludeParams=(-not -iwholename '*.svn*' -not -iwholename '*.bak*')
find -P . "${excludeParams[@]}" -type f -name "*.*"