我想在一個循環中運行一個jq過濾器,並從另一個文件中的列表中獲取匹配的鍵值。使用eval來執行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?請注意它在問題中是如何着色的,你試圖將雙引號放在雙引號字符串中,它應該被轉義。 –
轉義報價做了伎倆,謝謝。 – ubr