如何使用jq捕获数组索引并拼接输出指定格式的字段内容
jq命令调整方案
最终可用命令
你可以直接使用to_entries获取数组索引,调整后的完整赋值语句如下:
instances=( $(echo "$data" | jq -r 'to_entries[] | "\(.key + 1).\(.value.name)~\(.value.id)"') )
命令说明
to_entries会将输入的JSON数组转换为包含key(对应数组索引,默认从0开始计数)和value(对应数组元素)的对象数组to_entries[]遍历转换后的所有对象条目\(.key + 1)将默认从0开始的索引加1,满足从1计数的需求.value.name和.value.id分别取原数组元素对应的name、id字段-r参数输出原始纯文本,避免结果额外包裹JSON引号
注意:bash变量赋值时等号两侧不能有空格,你原写法里的
instances = (需要调整为instances=(,否则会执行报错。
内容的提问来源于stack exchange,提问作者gmtek
相关产品推荐
相关产品推荐

