You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure CLI自动化更新DevOps Wiki时ETag格式错误求助

解决Azure DevOps Wiki自动化更新中ETag转义问题

问题核心是通过Azure CLI获取的ETag在Bash变量赋值后,传递给更新命令时出现多余转义,导致IfMatch头无效。以下是几种可行的解决方法:

方法1:使用--output tsv获取纯净ETag值

修改ETag获取命令,通过--output tsv参数让Azure CLI直接输出不带JSON引号和转义的原始ETag值:

etag=$(az devops wiki page show \
    --path 'my_project - Slab Quality Prediction/test' \
    --wiki my_project.wiki \
    --query 'eTag' \
    --output tsv)

然后在更新命令中用双引号包裹变量,避免Bash分词破坏格式:

az devops wiki page update \
    --path 'my_project - Slab Quality Prediction/test' \
    --wiki my_project.wiki \
    --version "$etag" \
    --file-path test.md \
    --encoding utf-8

方法2:用sed清理JSON输出的引号

如果不想修改输出格式,可通过sed命令去掉ETag输出前后的JSON外层引号:

etag=$(az devops wiki page show \
    --path 'my_project - Slab Quality Prediction/test' \
    --wiki my_project.wiki \
    --query 'eTag' | sed -e 's/^"//' -e 's/"$//')

同样在更新命令中用双引号包裹变量:

az devops wiki page update \
    --path 'my_project - Slab Quality Prediction/test' \
    --wiki my_project.wiki \
    --version "$etag" \
    --file-path test.md \
    --encoding utf-8

方法3:用jq解析JSON输出(需提前安装jq)

如果系统中安装了jq工具,可直接解析JSON输出获取原始ETag值:

etag=$(az devops wiki page show \
    --path 'my_project - Slab Quality Prediction/test' \
    --wiki my_project.wiki \
    --output json | jq -r '.eTag')

更新命令同样使用"$etag"传递参数即可。

关键注意点

  • 必须用双引号包裹变量:Bash中如果直接使用$etag,会导致字符串中的空格或特殊字符被分词,破坏ETag的格式;用"$etag"可以完整保留变量的原始内容。
  • ETag本身包含双引号:Azure DevOps Wiki的ETag值本身就带有双引号,所以传递时必须完整包含这部分内容,不能额外转义。

内容的提问来源于stack exchange,提问作者Gabriel Lopes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:41:57