Json bash脚本中的ARM.Template。未终止的字符串。预期的分隔符:
我正在编写一个bash脚本,用于使用“armclient”将证书从linux服务器上载到azure keyvault 关于如何使用armclient,我遵循以下指南: 我要执行的命令如下:Json bash脚本中的ARM.Template。未终止的字符串。预期的分隔符:,json,linux,bash,shell,Json,Linux,Bash,Shell,我正在编写一个bash脚本,用于使用“armclient”将证书从linux服务器上载到azure keyvault 关于如何使用armclient,我遵循以下指南: 我要执行的命令如下: ARMClient.exe PUT /subscriptions/<Subscription Id>/resourceGroups/<Server Farm Resource Group>/providers/Microsoft.Web/certificates/<User F
ARMClient.exe PUT /subscriptions/<Subscription Id>/resourceGroups/<Server Farm Resource Group>/providers/Microsoft.Web/certificates/<User Friendly Resource Name>?api-version=2016-03-01 "{'Location':'<Web App Location>','Properties':{'KeyVaultId':'<Key Vault Resource Id>', 'KeyVaultSecretName':'<Secret Name>', 'serverFarmId':'<Server Farm (App Service Plan) resource Id>'}}"
当我回显变量putparm的输出时,结果看起来与预期的一样(X-ed out name/id):
当我运行armclient时,在脚本中放入$putparm
,我得到以下错误:
“错误”:{
“代码”:“InvalidRequestContent”,
“消息”:“请求内容无效,无法反序列化:'未终止字符串。应为分隔符:\”。路径“”,
第1行,位置21.“}”
但是,当我获取$putparm变量的输出并在服务器上“手动”运行命令时,它就工作了
我猜这与linux存储变量的方式有关,而且API正在请求JSON(或其他东西)
欢迎您的帮助。您定义变量的方式
putparam
是错误的
它可能被解释为文字字符串,而不是对象。请注意,一个简单的字符串,如“hello”
,是一个有效的JSON数据,但它可能不是服务器所期望的
如果要正确引用变量,请执行以下操作:
putparm="{\"Location\":\"$resolved_locationid\",\"Properties\":{\"KeyVaultId\":\"$resolved_keyvaultid\",\"KeyVaultSecretName\":\"$certname\",\"serverFarmId\":\"$resolved_farmid\"}}"
然后像这样使用它:
armclient put "$resolved_armapi" "$putparm"
是的,我发现了JSON的问题。问题是我不知道如何解决。你发布的报价也不起作用(相同的错误)。当我使用它转换字符串时,它就开始工作了。并将其粘贴到Json文件中。在不知道您的工具
armclient
实际需要什么的情况下,这有点像尝试一个错误…您至少可以引用您的变量,并像这样使用它armclient put“$putparm”“
并尝试在json数据周围使用单引号,如putparm=“$resolved_armapi'{…}”
@Fredrik实际上,最好调用armclient put“$resolved_armapi”“$putparm”
这样的工具,其中$putparm
只包含json数据,这就是我最后所做的。我创建了一个json模板文件,在那里我交换了变量并将其发送给了armclient。@Fredrik感谢您的反馈,我更新了答案
putparm="{\"Location\":\"$resolved_locationid\",\"Properties\":{\"KeyVaultId\":\"$resolved_keyvaultid\",\"KeyVaultSecretName\":\"$certname\",\"serverFarmId\":\"$resolved_farmid\"}}"
armclient put "$resolved_armapi" "$putparm"