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

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中相应地初始化所有变量?

che*_*ner 6

您可以遍历键/值对并用于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)