Azure devops 可能包含特殊字符的Filename参数

Azure devops 可能包含特殊字符的Filename参数,azure-devops,Azure Devops,我试图获取文件名作为参数,并在代码中的目录中查找该文件。由于文件名可以包含空格,我也用双引号将其括起来,但当文件名包含空格和“-”或任何其他字符(如“\u1”)时,它仍然失败。 如何处理这样的文件名 echo $(filename) paths=$(find $(Build.SourcesDirectory) -name "$(filename)") 文件名:Staging-test.json 错误: Error opening file "/home/vsts/work/1/s/Team-

我试图获取文件名作为参数,并在代码中的目录中查找该文件。由于文件名可以包含空格,我也用双引号将其括起来,但当文件名包含空格和“-”或任何其他字符(如“\u1”)时,它仍然失败。 如何处理这样的文件名

echo $(filename)

paths=$(find $(Build.SourcesDirectory) -name "$(filename)")
文件名:
Staging-test.json

错误:

Error opening file "/home/vsts/work/1/s/Team-EAP/Staging" 
ENOENT: no such file or directory, open '/home/vsts/work/1/s/Team-EAP/Staging'
编辑以添加更多详细信息:
我之所以在大括号()中引用文件名,是因为它作为参数传递给Azure DevOps中的REST调用,而在Azure DevOps中,我们必须使用括号来引用此类参数

您可以将find命令输出到bash数组,如下所示:

echo $(filename)

paths=()
while IFS=  read -r -d $'\0'; do
    paths+=("$REPLY")
done < <(find $(Build.SourcesDirectory) -name "$(filename)" -print0)
echo$(文件名)
路径=()
而IFS=read-r-d$'\0';做
路径+=(“$REPLY”)

完成
echo$(文件名)错误。(您没有对文件名执行命令替换)。您可以使用大括号,例如
${filename}
。如果
find
返回多个文件名,则
路径将不起作用。首先更正您的
(),{}
问题。(或者只是双引号,例如,
“$filename”
)。这一个很好用:find-iname“${filename}”为没有在文件名中添加()用法的详细信息而道歉。使用“${filename}”不起作用,因为我必须使用()来引用它。在Azure DevOps中,我们必须使用括号来引用此类参数。那么这个问题与bash无关。谢谢。当路径返回多个值时,我需要它。但是当前当文件名有特殊字符时,它会失败。有办法解决吗?请尝试像这样传递filename模式的值:filename=“Staging*”。因此,find命令应该列出所有具有匹配模式的文件,并将这些条目添加到paths数组中,而不考虑文件名中的空格或特殊字符。