我有一个json文件,其中包含我想添加到bash数组中的键和值,但我无法让它工作.
1、使用数据创建JSON文件
# JSON file
echo '{"persons": [{"name":"John", "age":30, "car":"big"}, {"name":"Alice", "age":29, "car":"big"}]}' > my.json
2、迭代姓名和年龄
# Looping over JSON
jq -c '.persons[]' my.json | while read p;
do
name=$(echo $p | jq -r '.name')
age=$(echo $p | jq -r '.age')
echo "Name: $name"
echo "Age: $age"
done
姓名和年龄按预期打印出来.
3、手动向数组中添加名称和年龄
# Creating array and adding elements
declare -A mylookup
key="James"
value="31"
mylookup[$key]=$value
4、判断是否添加了值
for key in "${!mylookup[@]}"
do
echo "Key: $key"
echo "Value: ${lookup[$value]}"
done
奇怪的是,我只正确地显示了 keys
5、向循环中的数组添加名称和年龄
# Creating array and adding elements
declare -A mylookup
jq -c '.persons[]' my.json | while read p;
do
name=$(echo $p | jq -r '.name')
age=$(echo $p | jq -r '.age')
mylookup[$name]=$age
done
6、打印数组中的键和值
现在,我判断添加到数组中的内容.
for key in "${!mylookup[@]}"
do
echo "Key: $key"
echo "Value: ${lookup[$value]}"
done
未打印任何内容.....我在哪里失败了?我怀疑在向数组中添加键和值时出现了问题,但我无法找出问题所在.