【发布时间】:2016-07-20 16:15:03
【问题描述】:
我在 Bash 脚本中有如下代码:
FileNames=""
while read -r FileName; do
...
FileNames+=" -o -iname \"$FileName\""
...
done <"$ListOfFileNames"
FileNames="${FileNames# -o }"
find foo -type f \( $FileNames \)
这通常对我有用,直到我发现某些文件名包含空格(可能还有其他特殊字符)。当我围绕使用 $FileName 添加额外的引用来涵盖这些情况时,$FileNames 在 find 命令中的扩展开始出现异常。我尝试了其他各种引用和转义的方法,但结果都是空的。我已经在我编写的许多其他脚本中以许多其他方式成功地使用了变量,但是这个让我感到困惑。我在 Cygwin 下运行脚本。有什么好的方法来处理这个吗?
【问题讨论】:
-
我自己只是在寻找这个问题的答案。 Here ya go.
-
Barmar,您提供的参考资料没有显示我搜索的方式,但我认为它基本上是相同的问题。但是,我会说它不是“完全重复”,因为它不必处理引用嵌套扩展然后删除部分变量(我第一次尝试数组方法时弄错了)。跨度>
-
丹尼尔,我实际上并没有看到你的链接发送给我的地方解释了我在命令中的变量扩展问题,但现在它是桥下的水。