jq '.issues[].fields.subtasks[].fields | .issuetype.subtask' 1.json
当尝试将上面的命令作为变量时,按预期工作(输出“true”)
for custom_field in `cat 1.json | jq .issues[].fields.subtasks[].fields | .issuetype.subtask`; do
echo $customfield
done
得到:.
issuetype.subtask: command not found
答案1
尝试这个 :
for custom_field in $(
jq '.issues[].fields.subtasks[].fields | .issuetype.subtask' 1.json
); do
echo "$customfield"
done
或者更好的是while 循环如果您的值带有空格:
while IFS= read -r customfield; do
echo "$customfield"
done < <(jq '.issues[].fields.subtasks[].fields | .issuetype.subtask' 1.json)
笔记 :
- 你需要 '引用' 这杰奇表达
- jq 可以自行读取文件,不需要
cat
- 停止使用反引号 ` 2018 年请使用$( )
< <( )
是 bash 独有的功能,其他 shell 中不可用(甚至在以 sh 调用的 bash 中也不可用)。因此,请使用 bash shebang#!/bin/bash
或启动脚本#!/usr/bin/env bash
,不要通过使用以下sh
命令运行脚本来覆盖它