bash 文件名作为 jq 命令中的参数

bash filename as parameter in jq commands

这里是 bash 函数,使用 'jq' 命令解析 json 文件:

jq_fullpath_endkey() {
      PATHARRAY=$(jq -c 'paths | select(.[-1] == "'$keyword'")|map(strings |= ".\(.)" | numbers |= "[\(.)]") | join("")' **${news.json}**)
}

news.json 是 json 文件,其中包含我想用 jq 解析的所有内容。

一旦我将 ${news.json} 替换为名为 response 的变量,该变量包含 news.json 内容作为字符串,该函数就可以工作。

下面是有效的命令:

  PATHARRAY=$(jq -c 'paths | select(.[-1] == "'$keyword'")|map(strings |= ".\(.)" | numbers |= "[\(.)]") | join("")'**<<< "$response"**)

我的问题是如何将 'json file' 用作 jq cmd 的一部分? 我怀疑我使用的 double/single 引用有问题。

我用 bash

中的“parameter substitution”弄明白了
myfile="news.json"
PATHARRAY=$(jq -c 'paths | select(.[-1] == "'$keyword'")|map(strings |= ".\(.)" | numbers |= "[\(.)]") | join("")' ${myfile})

相关概念: variable substitution command substitution