When trying to change a single element in an array, I get Invalid path expression near attempt to access element
- but only when the array is captured from --rawInput
.
Example:
# input: [ 1, 0 ]
. as $list | $list[0] = 30
# output: [ 30, 0 ]
But this doesn't work:
# input: 1,0
split(",") | map(tonumber) as $list | $list[0] = 30
# Invalid path expression near attempt to access element 0 of [1,0]
Any ideas?
Your attempt failed because of following :
Note that the LHS of assignment operators refers to a value in
.
. Thus$var.foo = 1
won’t work as expected ($var.foo
is not a valid or useful path expression in.
); use$var | .foo = 1
instead.
From the Assignment section of the jq manual.
It likely only worked in your first jq
command because $list
and .
were equal.
Following that you could have used the following :
split(",") | map(tonumber) as $list | $list | .[0] = 30
Or more simply in your case :
split(",") | map(tonumber) | .[0]=30
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With