Given a JSON file, arguments.json:
{"dagger": true, "version": false, "nether_strike": true,
"greater_bash": "5", "FILE": "ancientscroll.txt",
"empower_haste": "1", "help": false}
I can read using jq in shell and initialize the variables individually:
dagger=$(cat arguments.json | jq '.["dagger"]')
greater_bash =$(cat arguments.json | jq '.["greater_bash"]')
echo $dagger
echo $greater_bash
Is there a way to read all key-value pairs in the JSON file and then initialize all variables accordingly in shell?
解决方案
You can loop over the key/value pairs and use declare to create variable names dynamically.
while read -r name value; do
declare "$name=$value"
done <