json - 通过 Shell 脚本读取 JSON 文件并替换密钥
问题描述
我是 Shell 脚本的新手,我需要通过 shell 脚本读取本地 JSON 文件,并希望找到并替换所有键。
JSON文件
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
外壳脚本.sh
path="./path.json"
# arr=("key1" "key2" "key3") // this works fine
mapfile -t arr < <(./jq -r 'keys[]' $path) // not working
for elem in "${arr[@]}"
do
sed -i "s/${elem}/MyNewKey/g" $path
done
在这里,硬编码数组和从mapfile
实用程序生成的数组有什么区别?
如果我arr
以两种方式回显,则两者在控制台中看起来都相同。
有人可以帮助我了解有什么区别吗?
解决方案
尝试sed -i "s/$elem/MyNewKey/g" $path
您必须以这种方式引用 elem,因为它不是数组。它是数组的特定元素。通常,您通过在其前面放置 $ 来引用 for 循环变量。
对于有关 for 循环的简单示例,我发现这很有帮助。
推荐阅读
- python - 向熊猫数据框添加和增加分钟数
- mysql - Is SQL Inner Join the correct approach?
- r - ANOVA 表,每个处理 R 的观察次数不同
- xml-parsing - 如何更新文件中的 XML 字符串?
- python-3.x - 如何使用一键python打开或关闭所有复选按钮
- php - 使用带有 wordpress 的查询“jeditable”来更新表
- bison - `ss` 在哪里设置 flex 输入以来自命令行参数?
- android - 如何进一步测试我的 Gdx-pay 实施?
- javascript - 从 php jquery Ajax 获取 Json
- xaml - Xamarin 表单 ScrollView 在下方留下一大片空白区域