二头肌字符串参数中连续的“<,>”字符导致此时出现“>”是意外的“

问题描述 投票:0回答:1

类似于之前回答的问题: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('<>','"<>"')

这有效,但仅适用于那些字符组合,并且诸如“>>”、“>>>”之类的内容也会出错,尽管第一个只会给出“命令的语法不正确”。 我正在寻找可能更好的解决方案。 有什么想法吗?

azure azure-cli azure-bicep
1个回答
0
投票

二头肌字符串参数中连续的“<,>”字符导致此时出现“>”是意外的

我同意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`""

这应该可以正常工作,没有任何阻止程序。

参考:

https://learn.microsoft.com/en-us/cli/azure/use-azure-cli-successively-quoting?tabs=powershell1%2Cbash2%2Cpowershell3

有关特殊字符的信息。

© www.soinside.com 2019 - 2024. All rights reserved.