【发布时间】:2023-03-19 22:04:01
【问题描述】:
目标
将 Bash 文件中的变量传递到另一个 Bash 文件中的 JQ 命令
上下文
我有一个 JSON 文件,其中包含两个要填充的空值:
- HTML 文件
- Bash 文件中的变量 (file-b.sh)
HTML 部分有效。我无法弄清楚可变部分。我展示了 HTML 部分来演示我试图遵循的逻辑。
文件-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
文件-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,但仍然失败。感谢您的任何想法。
【问题讨论】:
-
您确定在
--arg variable "$subject"中使用双引号包围$subject?