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})
这里是 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})