Azure CLI命令变量传递异常:JSON参数格式错误排查
解决Azure CLI特性过滤器更新的JSON参数错误问题
问题原因
直接传递未转义且未用引号包裹的变量时,Shell会拆分参数中的特殊字符(比如JSON里的引号、空格),导致Azure CLI无法识别为合法的转义JSON字符串。
解决方案
方法1:用jq工具生成转义后的JSON字符串(推荐)
jq能自动处理JSON的转义,确保输出符合Azure CLI要求的格式:
# 读取文件内容并转义成适合CLI传递的JSON字符串 file_content=$(jq -c . /home/diwakar/cli.txt | jq -r @json) # 执行更新命令,注意用双引号包裹所有变量 az appconfig feature filter update --connection-string "$endpoint" --feature "$featurename" --filter-name Microsoft.Targeting --filter-parameters "$file_content" --yes
方法2:用sed手动转义双引号
如果没有jq,可以用sed替换所有双引号为转义后的双引号:
# 替换文件中的双引号为\" file_content=$(sed 's/"/\\"/g' /home/diwakar/cli.txt) # 同样用双引号包裹变量执行命令 az appconfig feature filter update --connection-string "$endpoint" --feature "$featurename" --filter-name Microsoft.Targeting --filter-parameters "$file_content" --yes
关键注意点
- 所有变量(包括
$endpoint、$featurename)都要用双引号包裹,避免Shell解析时拆分参数。 - Azure CLI要求
--filter-parameters的值是转义后的JSON字符串,即所有内部双引号前必须加反斜杠(\")。
内容的提问来源于stack exchange,提问作者Diwakar Reddy
相关产品推荐
相关产品推荐

