2016-11-09 2 views
0

私はJQクエリに問題があります。JQ引数エラー

max=$(script) <-- (return integer) 
jq -r ".notifiestext | map(select(.read==false))" temp_notif | 
    jq --arg foo "$max" "map(select(.id<$foo))" 

を私は次のエラーを取得する:

jq: error: syntax error, unexpected ')' (Unix shell quoting issues?) at <top-level>, line 1: map(select(.id<)) 

".ID" パラメータは整数

です

どのような解決策ですか?

+2

コメントを追加するのではなく、直接質問をよく編集してください。また、複数行のバッククォートの代わりにコードブロックにインデントを使用します。 –

答えて

3

$fooの場合は$をエスケープして、jqを実行する前にシェルがパラメータとして展開しようとしないようにする必要があります。

jq -r ".notifiestext | map(select(.read==false))" temp_notif | 
    jq --arg foo "$max" "map(select(.id<\$foo))" 

jqフィルタでは、一重引用符を使用する方がよいでしょう。

jq -r '.notifiestext | map(select(.read==false))' temp_notif | 
    jq --arg foo "$max" 'map(select(.id<$foo))' 
+2

また、jqへの2回目の呼び出しは完全に不要であることにも注意してください。これは、単一の呼び出しで記述されている可能性があります。 –

+0

正直言って、私はどちらの呼び出しが実際に行っていたかを見たことはありません。 – chepner