Bash-在MacOS上获取空数组作为回报

对于狗

关于这个问题(将行分隔的grep结果放入array),当我使用

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

GNU bash, version 5.0.2(1)-release (x86_64-apple-darwin18.2.0)macOS

我得到一个空数组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}"扩展。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章