我正在尝试对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
。(
我说这是基础,因为它不是一个完整的解决方案。
- 如果环境中存在相应的变量,则无法生成字符串
$arch
$host
和$arch
都将在"$host/$arch"
中被替换,但$host
不会在$host_$arch
中被替换。(它将尝试替换$host_
。(- 它将愉快地插入
$HOME
、$USER
和传递给jq
的任何其他env变量