Ich versuche, ein Array in jq zu schneiden, wo das Ende Index als Argument von der Shell übergeben wird (bash):jq: array Aufschneiden basierend auf Argument
end_index=7
cat obj.json | jq --arg eidx $end_index, '.arr[0:$eidx]'
Dies funktioniert wie erwartet, wenn der Index hartcodierte
cat obj.json | jq '.arr[0:7]'
aber in dem Beispiel an der Spitze, ich erhalte eine Fehlermeldung
jq: error (at <stdin>:0): Start and end indices of an array slice must be numbers
ich vermute, dies könnte mit h zu tun ow jq behandelt die Variablensubstitution innerhalb des Slice-Operators [:]
, aber keiner meiner Versuche, das Problem zu lösen, z.B. durch das Einschließen des Variablennamens in geschweifte Klammern .arr[0:${eidx}]
, hat funktioniert.
--argjson hat den Job für mich getan –