json - 将 Bash 文件中的变量通过管道传输到另一个 Bash 文件中的 JQ 命令
问题描述
目标
将 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
,但仍然失败。谢谢你的任何想法。
解决方案
在我看来,您不需要两个 bash 脚本。您可以使用参数调用 file-a.sh:
./file-a.sh "This is my subject"
在 file-a.sh 中,您可以按以下方式访问参数:
echo "Subject: $1"
...其中 $1 , $2 等是变量
推荐阅读
- oracle - 尝试根据我的触发器(SQL)中定义的条件删除一行
- ios - 无法删除设置了 `.parent` 的 CKRecords
- python - 为什么所有对象都使用相同的坐标填充?
- python - 根据压缩属性、值对设置对象属性
- c# - 试图为 C# 并发队列找到无锁解决方案
- android - 有没有办法延迟 Unity 中手机摄像头的视频输入?
- javascript - 如何在ajax成功(或完成)内访问外部数组索引
- python - 如何按给定段收集张量元素?
- glassfish - 生成 CSR,除了通用名称和国家/地区外,专有名称 (DN) 中没有任何额外属性
- c++ - Boost python没有看到内存归智能指针所有