Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部分find命令的bash变量展开和引用_Bash_Variable Expansion - Fatal编程技术网

部分find命令的bash变量展开和引用

部分find命令的bash变量展开和引用,bash,variable-expansion,Bash,Variable Expansion,我在Bash脚本中有如下代码: FileNames="" while read -r FileName; do ... FileNames+=" -o -iname \"$FileName\"" ... done <"$ListOfFileNames" FileNames="${FileNames# -o }" find foo -type f \( $FileNames \) filename=“” 而read-r文件名;做 ... 文件名+=“-o-iname

我在Bash脚本中有如下代码:

FileNames=""
while read -r FileName; do
    ...
    FileNames+=" -o -iname \"$FileName\""
    ...
done <"$ListOfFileNames"
FileNames="${FileNames# -o }"
find foo -type f \( $FileNames \)
filename=“”
而read-r文件名;做
...
文件名+=“-o-iname\$FileName”
...

完成使用数组。数组可以更好地处理空白。为了更加安全,还可以使用
IFS=
使用
read
保留前导空格

FileNames=(-false)
while IFS= read -r FileName; do
    ...
    FileNames+=(-o -iname "$FileName")
    ...
done < "$ListOfFileNames"
find foo -type f \( "${FileNames[@]}" \)
文件名=(-false)
而IFS=read-r文件名;做
...
文件名+=(-o-iname“$FileName”)
...
完成<“$ListOfFileNames”
查找foo-类型f\(“${FileNames[@]}”\)

我自己也在寻找答案。Barmar,你提供的参考资料并没有像我搜索的那样显示出来,但我发现基本上是同一个问题。但是,我要说的是,它不是“完全重复的”,因为它不需要引用嵌套扩展,然后删除部分变量(我第一次尝试数组方法时出错)。Daniel,我实际上没有看到您的链接发送给我的位置解释了我在命令中使用变量扩展的问题,但是现在已经是水深火热了。谢谢John,这很有效,只是我必须弄清楚如何正确获得
FileNames=“${FileNames#-o}”
功能。起初,我只是将第一个数组元素设置为“”,但这不起作用<代码>取消设置
确实有效。