程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 sed 替换 makefile 中 json 中的值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 sed 替换 makefile 中 json 中的值?

开发过程中遇到使用 sed 替换 makefile 中 json 中的值的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 sed 替换 makefile 中 json 中的值的解决方法建议,希望对你解决使用 sed 替换 makefile 中 json 中的值有所启发或帮助;

我有一个 Json 文件

{
  "mode": "~test","data": "download","result": "aaa","API_version","12"
}

我有一个makefile

test:
        GIT_REV=$(sHell git rev-parse --short head)
        sed -e 's/"API_version": [^\]*/"API_version": "$$(GIT_REV)"/' test.Json

找到模式但不能替换值。

我也试过

sed -e 's/"API_version": [^\]*/"API_version": "$(GIT_REV)"/' test.Json

但给出错误:@H_194_5@make: GIT_REV: No such file or directory

但是,在makefile之外我可以运行

sed -e 's/"API_version": [^\]*"/"API_version": "'$GIT_REV'"/g' test.Json

我想知道如何修改 makefile 中的 sed 命令以替换 Json 值。我的目标是通过 make 文件替换 Json 中的值。该值是 git commit ID。

解决方法

此处 GIT_REV 的设置是配方的一部分,这意味着它正在设置 sHell 变量。 makefile 中配方的每一行都在不同的 sHell 中运行,因此单独在一行上设置 sHell 变量是没有用的。

然后在下一行中,您使用 $$(GIT_REV),它不是 make 变量引用(因为您使用 $$ 将其从 make 中转义)。

您没有向我们提供有关您真正想做的事情的太多信息,但鉴于此 makefile,这将起作用:

GIT_REV = 3434

test:
        sed -e 's/"api_version": [^\]*/"api_version": "$(GIT_REV)"/' test.json
@H_673_56@

大佬总结

以上是大佬教程为你收集整理的使用 sed 替换 makefile 中 json 中的值全部内容,希望文章能够帮你解决使用 sed 替换 makefile 中 json 中的值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。