当前位置:  开发笔记 > 编程语言 > 正文

如何使用另一个命令输出管道来初始化bash数组?

如何解决《如何使用另一个命令输出管道来初始化bash数组?》经验,为你挑选了2个好方法。

有没有办法管道输出一个列出一堆数字的命令(每个数字在一个单独的行中)并用这些数字初始化一个bash数组?

详细信息:此列表列出了在以下日期范围内提交的3个更改列表编号.然后通过管道输出cut以进一步过滤它以获得更改列表编号.

p4 changes -m 3 -u edk -s submitted @2009/05/01,@now | cut -d ' ' -f 2

例如:

422311
543210
444000

如何将此列表存储在bash数组中?



1> nik..:

您可以在ticks下执行命令并将Array设置为,

ARRAY=(`command`)

或者,您可以将命令的输出保存到文件中并类似地将其保存,

command > file.txt
ARRAY=(`cat file.txt`)

或者,只是下面评论中建议的以下表格之一,

ARRAY=(`< file.txt`)
ARRAY=($(


尽可能避免使用后引号.这更具可读性,可以在没有笨拙引用的情况下使用嵌套:ARRAY =($(command))或ARRAY =($(无用的cat:`如果你的命令输出有空格,那你运气不好

2> Andrey Staro..:

如果你使用bash 4+,它有一个特殊的命令:mapfile也称为readarray,所以你可以像这样填充你的数组:

declare -a a
readarray -t a < <(command)

您可以使用更便携的版本

declare -a a
while read i; do
  a=( "${a[@]}" "$i" )
done < <(command)


a [$ {#a [*]}] = value`或`a + =(value)`是附加到数组的更好语法。
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有