有没有办法管道输出一个列出一堆数字的命令(每个数字在一个单独的行中)并用这些数字初始化一个bash数组?
详细信息:此列表列出了在以下日期范围内提交的3个更改列表编号.然后通过管道输出cut
以进一步过滤它以获得更改列表编号.
p4 changes -m 3 -u edk -s submitted @2009/05/01,@now | cut -d ' ' -f 2
例如:
422311 543210 444000
如何将此列表存储在bash数组中?
您可以在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)`是附加到数组的更好语法。