azure - 如何发送包含 & 符号的 Azure 应用程序配置值?
问题描述
我正在使用 Azure CLI 尝试将应用配置值设置为此 URL:
az appconfig kv set --key "mykey" --value "https://fake.com/action?param1=a¶m2=b" -n "test" --yes
我得到以下结果。请注意,这是来自 az 命令,而不是来自 shell。
Please specify config store name or connection string(suggested).
'param2' is not recognized as an internal or external command,
operable program or batch file.
有没有办法让 az 将此 URL 作为值,而不必求助于 URL 编码之类的愚蠢的东西?这对我来说似乎坏了。
另请注意,该消息Please specify config store name or connection string(suggested).
是因为它无法正确解析命令行,因为这是用 -n 指定的。如果我移动论点:
az appconfig kv set -n "test" --yes --key "mykey" --value "https://fake.com/action?param1=a¶m2=b"
我现在明白了:
{
"contentType": null,
"etag": "zuspBqPBOHR1mXfcKCgORXHpAxB",
"key": "mykey",
"label": null,
"lastModified": "2021-08-31T17:39:14+00:00",
"locked": false,
"tags": {},
"value": "https://fake.com/action?param1=a"
}
'param2' is not recognized as an internal or external command,
operable program or batch file.
这似乎更糟。它错误地创建了键值对,然后尝试将 param2 作为命令运行。怎么回事?
解决方案
关注@dm 的其中一个链接让我明白了这一点:
https://github.com/Azure/azure-cli/blob/dev/doc/quoting-issues-with-powershell.md
该链接完全解释了它,但基本上我需要在单引号内使用双引号,因为 Powershell 评估参数,然后 cmd 评估它们。所以单引号被 powershell 剥离,然后双引号被 cmd 剥离,最后 az 得到正确的参数。
这有效:
az appconfig kv set -n "test" --yes --key "mykey" --value '"https://fake.com/action?param1=a¶m2=b"'
{
"contentType": "text/plain",
"etag": "XugiNgxa2I04w0gaG2OBh9Jcj75",
"key": "mykey",
"label": null,
"lastModified": "2021-08-31T18:20:44+00:00",
"locked": false,
"tags": {},
"value": "https://fake.com/action?param1=a¶m2=b"
}
推荐阅读
- r - 我可以在 R 中使用 doParallel 在 Foreach 中仅使用一个 RODBC 连接吗?
- javascript - 替换匹配并忽略某些字符
- android - RecyclerView 中的图像在更新时闪烁
- linux - 如何从文本文件中给出的路径创建文件夹和文件
- javascript - 为什么需要创建http服务器?
- css - 无法使用 justify-content: space-between; 在反应引导中
- javascript - js plotly 热图总是颠倒?
- html - 根据另一个 div 或元素的存在更改一个 DIV 的可见性
- python - django 表单中的多级下拉菜单
- c++ - std::priority_queue 的自定义比较器背后的逻辑