一尘不染

有没有办法读取JSON文件中的所有键值对,然后在shell中相应地初始化所有变量?

json

给定一个JSON文件,arguments.json

{"dagger": true, "version": false, "nether_strike": true, 
 "greater_bash": "5", "FILE": "ancientscroll.txt", 
 "empower_haste": "1", "help": false}

我可以jq在shell中阅读using 并分别初始化变量:

dagger=$(cat arguments.json | jq '.["dagger"]')
greater_bash =$(cat arguments.json | jq '.["greater_bash"]')

echo $dagger
echo $greater_bash

有没有办法读取JSON文件中的所有键值对,然后在shell中相应地初始化所有变量?


阅读 489

收藏
2020-07-27

共1个答案

一尘不染

您可以遍历键/值对,并用于declare动态创建变量名。

while read -r name value; do
    declare "$name=$value"
done < <(jq -r 'to_entries[] | "\(.key) \(.value)"' arguments.json)
2020-07-27