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

使用sed结合Shell变量替换JSON中checksum值的问题

解决sed替换JSON中checksum值时变量不生效的问题

这问题我遇过好多次啦!核心原因是你用了单引号包裹sed命令——shell在单引号内部不会解析任何变量,所以$checksumVal被原封不动当成字符串写入了new.json文件,而不是替换成你期望的newval。

给你两个靠谱的解决办法:

  • 方法一:改用双引号包裹sed命令
    把整个sed命令用双引号包裹,同时转义JSON里的双引号(避免和外层双引号冲突),命令如下:

    sed -i "s/\"checksum\": \"[^\"]*\"/\"checksum\": \"$checksumVal\"/g" new.json
    

    这样shell会先解析$checksumVal变量,再执行sed替换操作。

  • 方法二:混合单双引号拆分命令
    保持正则部分用单引号(避免转义麻烦),只把变量部分用双引号包裹,让shell单独解析变量,命令如下:

    sed -i 's/("checksum": ")[^"]*(")/\1'"$checksumVal"'\2/g' new.json
    

    这里的思路是把sed命令拆成三部分:'s/("checksum": ")[^"]*(")/\1' + "$checksumVal" + '\2/g',shell会自动拼接这三部分,同时解析中间的变量。

假设你已经设置了checksumVal="newval",执行上面任意一个命令后,new.json里的checksum就会变成"checksum": "newval"啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:04:29