gpt4 book ai didi

arrays - Bash - 在 macOS 上返回空数组

转载 作者:行者123 更新时间:2023-11-29 09:29:13 25 4
gpt4 key购买 nike

关于这个问题(Put line seperated grep result into array),当我使用

echo v1.33.4 | arr=($(egrep -o '[0-9]{1,3}'))

macOS 上使用 GNU bash,版本 5.0.2(1)-release (x86_64-apple-darwin18.2.0)

我得到一个空数组 arr 作为返回

echo "($arr)"
()

然后是预期的输出

1
33
4

我在这里做错了什么?

最佳答案

它不适用于您的语法。您没有grep 的结果填充数组。您没有处理通过管道传递的字符串并在管道的接收端填充一个空数组。

也许你打算这样做

array=($(echo v1.33.4 | egrep -o '[0-9]{1,3}'))

请注意字符串的 echo 是如何传递到 egrep 的标准输入的,这在您的尝试中是丢失的。

但正如在链接的答案中,使用 mapfile 将是这里的最佳选择,因为如果搜索结果包含包含空格的单词,则使用上述方法,它们将存储在数组中的单独索引中,而不是比一个单一的。

mapfile -t array < <(echo "v1.33.4" |  egrep -o '[0-9]{1,3}')
printf '%s\n' "${array[@]}"

请注意 bash 中的数组扩展采用 "${array[@]}" 的语法,而不仅仅是一个简单的 "${array}" 扩展。

关于arrays - Bash - 在 macOS 上返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55143060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com