【问题标题】:Pipe variable from a Bash file into a JQ command in another Bash file将 Bash 文件中的变量通过管道传输到另一个 Bash 文件中的 JQ 命令
【发布时间】: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

标签: json bash jq


【解决方案1】:

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

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

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

echo "Subject: $1"

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

【讨论】:

    猜你喜欢
    • 2023-01-26
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多