Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当bashjq解析json时,返回一个多行数组,但是,如何使用这个结果呢?_Json_Bash_Jq - Fatal编程技术网

当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命令行选项。