将变量从Bash文件传递到另一个Bash文件中的JQ命令

时间:2018-08-24 22:43:30

标签: json bash jq

目标

将变量从Bash文件插入另一个Bash文件中的JQ命令

上下文

我有一个JSON文件,其中有两个我要填充的空值:

  • HTML文件
  • Bash文件(file-b.sh)中的变量

HTML部分起作用。我无法弄清楚可变部分。我展示了HTML部分,以演示我要遵循的逻辑。

file-a.sh

#!/bin/bash

#This line (for the HTML portion) works:
jq --arg text "$(<file.html)" '.content.text=($text | @html)' my-json.json > file.json

# This line (for the Bash variable) doesn't...see end of question for result:
jq --arg variable "$subject" '.subject=$variable' file.json > file-1.json

file-b.sh

#!/bin/bash

subject="abc"
export subject
./file-a.sh

file-1.json:结果

结果是填充了content.text,而subject实际上是作为我尝试编码的变量打印的。

{
  "content": {
    "text": "Is populated; works great"
  },
  "subject": "$subject",
}

根据我所读的内容,我在管道中尝试了多次单引号,双引号,括号,大括号(例如{"$subject"}".subject=$variable"),echo的迭代,但继续失败。谢谢您的任何想法。

1 个答案:

答案 0 :(得分:1)

在我看来,您不需要两个bash脚本。您可以使用以下参数调用file-a.sh:

./file-a.sh "This is my subject" 

在file-a.sh中,您可以通过以下方式访问参数:

echo "Subject: $1"

...其中$ 1,$ 2等是变量