jq遍历list的两种方式
方法一:read -r + while循环
按行读取
bash
$rows=$(cat file.json | jq -rc '@base64')
while IFS= read -r line; do # IFS必须为空,才能正确按行处理
echo $line | jq -r '.ID' # 获取ID字段
done < file # 读取文件内容
# done <<< "$str" # here string方式读取bash变量
方法二:base64编码 + for循环
读取
bash
$rows=$(cat file.json | jq -rc '@base64') # 紧凑方式输出json并编码,这样就没有空格字符
# for只能按空白字符(空格、换行符)来分割string。所以必须先用base64编码去除空格
for row in $rows; do
echo $row | base -d | jq -r '.ID' # base64解码,获取ID字段
done < file # 读取文件内容
# done <<< "$str" # here string方式读取bash变量