有没有办法管道输出一个列出一堆数字的命令(每个数字在一个单独的行中)并用这些数字初始化一个bash数组?
详细说明:
这列出了3个变更清单编号,这些编号已在以下日期范围内提交。然后将输出传送到cut
以进一步过滤以获得更改列表编号。
p4 changes -m 3 -u edk -s submitted @2009/05/01,@now | cut -d ' ' -f 2
E.g。 :
422311
543210
444000
如何将此列表存储在bash数组中?
答案 0 :(得分:54)
您可以在ticks下执行命令并将Array设置为
ARRAY=(`command`)
或者,您可以将命令的输出保存到文件中并同样地将其保存,
command > file.txt
ARRAY=(`cat file.txt`)
或者,只是下面评论中建议的以下表格之一,
ARRAY=(`< file.txt`)
ARRAY=($(<file.txt))
答案 1 :(得分:9)
如果您使用bash 4+,则它具有以下特殊命令:mapfile也称为readarray,因此您可以像这样填充数组:
declare -a a
readarray -t a < <(command)
对于更便携的版本,您可以使用
declare -a a
while read i; do
a=( "${a[@]}" "$i" )
done < <(command)
答案 2 :(得分:0)
非常类似于#4,但对我来说看起来更好一些。 :)
declare -a a
readarray -t a <<< $(command)