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

如何使用sed将JSON值替换为Bash变量且不使用斜杠分隔符

解决sed替换JSON中branch值时环境变量不解析的问题

问题原因

你用单引号包裹整个sed命令,Bash会将单引号内的内容原样输出,不会解析其中的环境变量${BRANCH_NAME},导致变量被直接当作字符串写入JSON。

解决方案

方法1:改用双引号包裹sed命令

将外层单引号改为双引号,同时转义内部的双引号,让Bash解析变量:

sed -i "/branch/c\   \"branch\" : \"${BRANCH_NAME}\"" settings.json

方法2:混合单双引号拆分命令

把需要解析变量的部分用双引号包裹,其余部分用单引号,避免全局转义:

sed -i '/branch/c\   \"branch\" : "'"${BRANCH_NAME}"'"' settings.json

更可靠的JSON处理方案:使用jq

sed本质是文本处理工具,对JSON的语法兼容性差(比如JSON格式变动时匹配失效)。推荐用专门的JSON工具jq,命令如下:

  • 常规写法(生成临时文件替换原文件):
jq --arg branch "$BRANCH_NAME" '.branch = $branch' settings.json > temp.json && mv temp.json settings.json
  • 支持in-place编辑的版本(jq 1.5及以上):
jq --arg branch "$BRANCH_NAME" '.branch = $branch' --in-place settings.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:57:03