alv*_*vas 3 variables bash shell json jq
给定一个JSON文件,arguments.json:
{"dagger": true, "version": false, "nether_strike": true,
"greater_bash": "5", "FILE": "ancientscroll.txt",
"empower_haste": "1", "help": false}
Run Code Online (Sandbox Code Playgroud)
我可以jq在shell中使用并单独初始化变量:
dagger=$(cat arguments.json | jq '.["dagger"]')
greater_bash =$(cat arguments.json | jq '.["greater_bash"]')
echo $dagger
echo $greater_bash
Run Code Online (Sandbox Code Playgroud)
有没有办法读取JSON文件中的所有键值对,然后在shell中相应地初始化所有变量?
您可以遍历键/值对并用于declare动态创建变量名称.
while read -r name value; do
declare "$name=$value"
done < <(jq -r 'to_entries[] | "\(.key) \(.value)"' arguments.json)
Run Code Online (Sandbox Code Playgroud)