使用 gh cli 创建问题列表

时间:2021-05-19 10:54:23

标签: shell github-cli

我正在尝试从 GitHub 创建一组已打开的问题编号。我正在使用以下命令提取特定存储库和标签中所有打开的问题编号:

issueNumList=$(gh issue list -R <repo name> -l "label" | cut -f1)

问题是我无法从 issueNumList 作为列表读取(显然)。 我试着通过运行这个命令把它变成一个数组,但它只得到第一个数字:

IFS=' \n' read -ra issuesArray <<< "${issueNumList[0]}"

我尝试多次更改此命令,但在输出中没有看到任何差异。这是我得到的输出:

$ echo ${issueNumList[0]}
1684 1683 1681 1680 1679 1678 1677 1676 1675 1674 1673 1672 1671 1670 1669 1668 1667
$ echo ${issueNumList[@]}
1684 1683 1681 1680 1679 1678 1677 1676 1675 1674 1673 1672 1671 1670 1669 1668 1667
$ echo "${issueNumList[0]}"
1684
1683
1681
1680
1679
1678
1677
1676
1675
1674
1673
1672
1671
1670
1669
1668
1667
$ echo ${issuesArray[@]}
1684
$ echo ${issuesArray[0]}
1684
$ echo ${issuesArray[1]}

$ echo ${issuesArray[2]}

从这些输出中,我知道 issueNumListissuesArray 中只有一个位置,而从第三个输出中,我认为这意味着每个数字的末尾都有 \n。< /p>

1 个答案:

答案 0 :(得分:1)

<块引用>

如何将第一个命令的输出变成数组?

issueNumList 不是数组 - 在它上面使用 [0] 没有意义。

read 读取直到换行。将分隔符指定为零字节,然后您可以读取换行符分隔的列表。另外 '\n' 是两个字符 \n,它不是换行符,您可以在 $'\n' 中使用 ANSI C 引用来获取换行符。

issueNumList=$(gh issue list -R <repo name> -l "label" | cut -f1)
IFS=$' \n' read -d '' -r -a issuesArray <<<"$issueNumList"

但是将bash中的行读入数组的方法是readarray

readarray -t issuesArray <<<"$issueNumList"

要调试变量内容,请使用 declare -p,例如 declare -p issuesArraydeclare -p issueNumList