shell - 使用 gh 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]}
从这些输出中,我了解到在 and 中只有一个点,issueNumList
并且issuesArray
从第三个输出中,我认为这意味着每个数字的末尾都有 \n。
解决方案
如何将第一个命令的输出转换为数组?
issueNumList
不是一个数组 - 使用[0]
它没有意义。
read
一直读到换行。将分隔符指定为零字节,然后您可以读取换行符分隔的列表。也是'\n'
两个字符\
和n
,它不是换行符,您可以使用 ANSI C 引用$'\n'
来获取换行符。
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
、likedeclare -p issuesArray
或declare -p issueNumList
.
推荐阅读
- flutter - 我正在制作一个计算器,它使用颤振将所有不同的总和保持在屏幕上。不知道如何处理这个
- f# - 无法在 F# 中声明类型,错误 FS0010,错误 FS3118
- sql - 如何使用 GETDATE() 函数将数据时间转换为 int 数据类型?
- reactjs - 获取模态中的元素按钮与笑话反应?
- javascript - 将数据从 json 渲染到 vue html 模板
- r - 如何将百分比标记添加到 R 中的 Gauge Meter 中的值
- node.js - NodeJS 承诺睡眠时间太长
- arangodb - 如何使用 arangodb 可靠地安排定期重复的作业?
- scala - 派生`CanEqual`在函数不应该成功时成功
- python - 有什么方法可以检查是否远程安装了依赖项?