命令中使用的带引号的字符串



我认为我引用正确,但我无法弄清楚为什么我会得到这些不同的结果。测试目录:

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

这是引用问题还是其他问题?

Bash 不会将字符串数据解释为代码,因为这非常不可预测并导致安全漏洞。

Shellcheck 正确地建议改用数组:

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

相关内容

  • 没有找到相关文章

最新更新