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

如何编写含特殊字符的Azure DevOps YAML脚本?

解决Azure DevOps流水线提前解析脚本变量的问题

要让${var1}和${var2}在Docker容器执行run.sh时才被解析,需要对变量进行转义,避免Azure DevOps流水线提前替换这些变量。

修改后的流水线任务代码

- script: |
    tee -a run.sh <<EOF
    #!/bin/sh

    ###replace configuration with environment variables
    /bin/sed -i 's@https://development-website.mywebsite.cloud@'"\\${var1}"'@g' /usr/share/nginx/html/assets/index*.js
    /bin/sed -i 's@https://development-login.mywebsite.cloud@'"\\${var2}"'@g' /usr/share/nginx/html/assets/index*.js

    EOF
  displayName: "make run.sh"

原理说明

Azure DevOps的脚本任务会自动解析脚本中的${变量名}格式内容,将其替换为流水线中定义的对应变量值。通过在$前添加双反斜杠(\\),可以让Azure DevOps将\$视为普通字符写入run.sh文件,最终生成的脚本中变量会保留为${var1}和${var2}。当Docker容器执行该脚本时,容器内的Shell会正常解析这些环境变量并完成替换操作。

验证生成的run.sh内容

生成的run.sh文件内容应如下,变量未被提前替换:

#!/bin/sh

###replace configuration with environment variables
/bin/sed -i 's@https://development-website.mywebsite.cloud@'"${var1}"'@g' /usr/share/nginx/html/assets/index*.js
/bin/sed -i 's@https://development-login.mywebsite.cloud@'"${var2}"'@g' /usr/share/nginx/html/assets/index*.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:33:22