I'm trying to do the loop where output of each curl command which is returning json data is allocated to the variable/array. I'm using tee command to get my wanted value plus next token for next json piece of data. When I save data to file everything works fine but instead of saving data to file I would like to keep it in array/variable.
This works:
while [[ "$next_token" != "null" ]]
do
curl -u "$user:$password" "https://mylink.dot" \
| tee >(jq -r '.dataSummaries[] | .dataId' >> my_data_file.txt ) \
>(jq -r '.nextToken'>next_token_file.txt) > /dev/null
next_token=$(cat next_token_file.txt)
done
I tried this:
while [[ "$next_token" != "null" ]]
do
index=$((index+1))
curl -u "$user:$password" "https://mylink.dot" | tee >(jq -r '.dataSummaries[] | .dataId' | read my_array[index] ) >(jq -r '.nextToken'>next_token_file.txt) > /dev/null
next_token=$(cat next_token_file.txt)
done
When I use |read var my variable is empty.
How in this case can I store json data (and next token) in variable, not file.
The second
jqshould read from the standard output oftee, then write to standard output. This entire pipeline is then put in another process substitution forreadto read from.