有没有办法管道输出一个列出一堆数字的命令(每个数字在一个单独的行中)并用这些数字初始化一个bash数组?
详细信息:此列表列出了在以下日期范围内提交的3个更改列表编号.然后通过管道输出cut以进一步过滤它以获得更改列表编号.
p4 changes -m 3 -u edk -s submitted @2009/05/01,@now | cut -d ' ' -f 2
Run Code Online (Sandbox Code Playgroud)
例如:
422311
543210
444000
Run Code Online (Sandbox Code Playgroud)
如何将此列表存储在bash数组中?
nik*_*nik 57
您可以在ticks下执行命令并将Array设置为,
ARRAY=(`command`)
Run Code Online (Sandbox Code Playgroud)
或者,您可以将命令的输出保存到文件中并类似地将其保存,
command > file.txt
ARRAY=(`cat file.txt`)
Run Code Online (Sandbox Code Playgroud)
或者,只是下面评论中建议的以下表格之一,
ARRAY=(`< file.txt`)
ARRAY=($(<file.txt))
Run Code Online (Sandbox Code Playgroud)
如果你使用bash 4+,它有一个特殊的命令:mapfile也称为readarray,所以你可以像这样填充你的数组:
declare -a a
readarray -t a < <(command)
Run Code Online (Sandbox Code Playgroud)
您可以使用更便携的版本
declare -a a
while read i; do
a=( "${a[@]}" "$i" )
done < <(command)
Run Code Online (Sandbox Code Playgroud)