【发布时间】:2022-01-26 18:37:47
【问题描述】:
我想在 shell 脚本中的 json 文件中添加几个字段。这两个文件的值都包含在一个参数中,似乎没有办法让 sed 或 jq 使用这些值。我到处都用简单的双引号,但不能让它工作。
sh myscript.sh 'value' 'second value'
firstValue=$1
secondValue=$2
jq '.firstField="'$firstValue'" | .secondField="'$secondValue'"' $jsonFileAddress
sed -i '$s/}/,"firstField":"'$firstValue'","secondField":"'$secondValue'"}/' $jsonFileAddress
【问题讨论】:
-
请尽可能遵循minimal reproducible example 准则。特别是,有关 $jsonFileAddress 文件内容的一些详细信息会很有帮助。
-
当您执行
'something'$var'and more'时,$var的扩展不被引用。您需要改用'something'"$var"'and more'。此外,对于 jq,您应该使用--arg从 shell 传递值,而不是插值。