Bash将awk的输出捕获到数组中

我困在一个小问题上。 我有一个命令pipe道输出到awk,但我想捕获到一个数组的输出。

我的例子:

myarr=$(ps -u kdride | awk '{ print $1 }') 

但是,将所有的输出捕获到一个由逗号分隔的巨大string中:

 output: PID 3856 5339 6483 10448 15313 15314 15315 15316 22348 29589 29593 32657 1 

我也尝试了以下内容:

 IFS="," myarr=$(ps -u kdride | awk '{ print $1"," }') But the output is: PID, 3856, 5339, 6483, 10448, 15293, 15294, 15295, 15296, 22348, 29589, 29593, 32657, 1 

我希望能够将每个单独的pid捕获到它自己的数组元素中。 设置IFS = '\n'不做任何事情,并保留我原来的输出。 我需要做些什么才能做到这一点?

添加其他括号,如下所示:

 myarr=($(ps -u kdride | awk '{ print $1 }')) # Now access elements of an array (change "1" to whatever you want) echo ${myarr[1]} # Or loop through every element in the array for i in "${myarr[@]}" do : echo $i done 

另见bash – 数组 。