类似于之前回答的问题:Bicep/ARM XML 参数作为字符串未正确解析。这表明您需要转义“">”或“<" with quotes. This is one hit a bit different. In this bicep deployment example, if the value passed in contains consecutive '>”、“<' in either order, you'll receive an error similar to: "< was unexpected at this time."
”简单的二头肌示例文件是:
targetScope = 'subscription'
output esc_str string = escape_str
然后部署如:
az deployment sub create --name test --location eastus --template-file .\BicepTest.bicep --parameters escape_str='abc<>'
我的场景比这更复杂一点。但总体思路就在那里。
如果我将两个 <> 放在引号中,我就可以让它工作:
az deployment sub create --name test --location eastus --template-file .\BicepTest.bicep --parameters escape_str='abc"<>"'
但是,该值是传入的变量,因此它更多地采用
escape_str=$variable
格式(Powershell)的形式,并且我们不一定知道会导致此错误的组合。
我想知道是否有一种安全的方法来“转义”一组字符,或者是否有其他限制。 Bicep 参考并未指示需要转义的这些字符。
目前,我有几行,例如(也有我们发现的不同组合):
$x.replace('<>','"<>"')
这有效,但仅适用于那些字符组合,并且诸如“>>”、“>>>”之类的内容也会出错,尽管第一个只会给出“命令的语法不正确”。 我正在寻找可能更好的解决方案。 有什么想法吗?
二头肌字符串参数中连续的“<,>”字符导致此时出现“>”是意外的
我同意Thomas关于提到这样一个变量的观点:
$variable="abc<>"
然后像这样使用它--parameters escape_str=`""$variable"`"
。
特别是当特殊字符通过 PowerShell 传递到您的 Bicep 模板时。 PowerShell 和命令 shell 会对特殊字符(例如
<
、>
或 &
)进行特殊处理。
当您使用 powershell 时,它会提供特殊字符 (
`
)
$variable = "abc<>"
powershell就是这样。
在使用二头肌部署命令时,您可以使用它
az deployment sub create --name test --location eastus --template-file .\BicepTest.bicep --parameters escape_str="`"$variable`""
这应该可以正常工作,没有任何阻止程序。
参考:
有关特殊字符的信息。