当bashjq解析json时,返回一个多行数组,但是,如何使用这个结果呢?
当我使用命令时:当bashjq解析json时,返回一个多行数组,但是,如何使用这个结果呢?,json,bash,jq,Json,Bash,Jq,当我使用命令时: ids=`cat $myfilename | jq -r "[.data[].id]"` 然后像这样返回: [ "PC_PACX_0017", "GS_ZGRS_0001", "PC_PACX_0018", "GS_ZGRS_0002", "AB_HXJK_0002", "AB_HXJK_0001", "TK_TKZX_0011", "TL_TBAL_0002", "TL_TBAL_0001", "TS_TKRS_0001", "T
ids=`cat $myfilename | jq -r "[.data[].id]"`
然后像这样返回:
[
"PC_PACX_0017",
"GS_ZGRS_0001",
"PC_PACX_0018",
"GS_ZGRS_0002",
"AB_HXJK_0002",
"AB_HXJK_0001",
"TK_TKZX_0011",
"TL_TBAL_0002",
"TL_TBAL_0001",
"TS_TKRS_0001",
"TS_TKRS_0002",
"TS_TKRS_0003"
]
但它不能被视为数组,它的长度只有1。如何使用这个结果?数组与多行字符串不同。假设数据中没有换行符,将
jq
调用更改为
jq -r '[.data[].id]|.[]' # Could be simplified to '.data[].id'
并使用readArray
(bash
4或更高版本)填充适当的数组
readArray -t ids < <(jq -r '[.data[].id]|.[]' "$myfilename")
readArray-tids<这是一个普通的输入重定向。但是,为了健壮性和通用性,请使用-c命令行选项。