【发布时间】:2016-05-24 10:03:00
【问题描述】:
我正在尝试在循环中运行 jq 过滤器,从另一个文件的列表中获取我要匹配的键值。
while read line
do
jqfilter="jq '.Reservations[].Instances[] | select(contains({Tags: [{Key: "Name"}, {Value: "$line"}]}))' describe-instances.json"
eval "$jqfilter";
done < "./list"
循环正在运行,$line 正在被适当的值替换。
问题在于{Key: "Name"},eval 去掉了 NAME 周围的引号,因此 jq 过滤器不起作用。
【问题讨论】:
-
为什么首先使用 eval?为什么不直接调用 jq 呢? p.s.,注意它在问题中的颜色,你试图将双引号放在双引号字符串中,它应该被转义。
-
转义引号起到了作用,谢谢。
标签: json bash while-loop jq