使用echo和JQ更新变量值



我正在尝试对json文件运行以下命令。

#arch=x86_64
#ram=4
#echo '{"System Arch":{"Arch":"$arch","RAM":"$ram"}}' | jq '.' >> test.json

命令输出:

{
"System Arch": {
"Arch": "$arch",
"RAM": "$ram"
}

我想更新$arch和$ram的值。

谢谢,Naran

jq -n --arg arch "$arch" --arg ram "$ram" '{"System Arch":{"Arch":$arch,"RAM":$ram}}'

arch="$arch" ram="$ram" jq -n '{"System Arch":{"Arch":env.arch,"RAM":env.ram}}'

如果vars已经导出,那么以下内容就足够了:

jq -n '{"System Arch":{"Arch":env.arch,"RAM":env.ram}}'

现在,您可能希望我们为您编写一个模板系统。好吧,你还没有提供足够的关于你想要的系统的详细信息,但我可以为你提供基本信息:

jq '.. | strings | gsub("(?<whole>\$(?<var>\w+))"; env[.var] // .whole)'

(需要导出vars,以便shell将它们传递给jq。(

我说这是基础,因为它不是一个完整的解决方案。

  1. 如果环境中存在相应的变量,则无法生成字符串$arch
  2. $host$arch都将在"$host/$arch"中被替换,但$host不会在$host_$arch中被替换。(它将尝试替换$host_。(
  3. 它将愉快地插入$HOME$USER和传递给jq的任何其他env变量

相关内容

  • 没有找到相关文章

最新更新