This works:
#!/bin/sh -ecat << EOF > error.json[ {"path": "path1","path_with_namespace": "path_with_namespace1" }, {"path": "path2","path_with_namespace": "path_with_namespace2" }]EOFjq -c '.[]' error.json | while read PROJECT; do # This works PATH_WITH_NAMESPACE=$(echo "$PROJECT" | jq .path_with_namespace) echo "Shallow cloning $PATH_WITH_NAMESPACE ..."doneOutput:
$ ./error.sh Shallow cloning "path_with_namespace1" ...Shallow cloning "path_with_namespace2" ...Extracting a second value does not work:
#!/bin/sh -ecat << EOF > error.json[ {"path": "path1","path_with_namespace": "path_with_namespace1" }, {"path": "path2","path_with_namespace": "path_with_namespace2" }]EOFjq -c '.[]' error.json | while read PROJECT; do # This works PATH_WITH_NAMESPACE=$(echo "$PROJECT" | jq .path_with_namespace) echo "Shallow cloning $PATH_WITH_NAMESPACE ..." # This does not PATH=$(echo "$PROJECT" | jq .path) echo "$PATH"doneOutput:
$ ./error.sh Shallow cloning "path_with_namespace1" ..."path1"./error.sh: line 18: jq: command not foundI've tried numerous variants of looping over arrays with bash and jq. Basically I can't work with more than one key out of the json file. I need to work with more than one. How would a solution look like?
@0stone0 quoting "$PROJECT" has no effect.