将jps输出解析为数组

时间:2012-08-03 14:12:22

标签: bash process

我在bash shell中使用jps来查找所有正在运行的java进程。我希望能够使用jps输出的PID列表。我可以使用

将它们成功打印到屏幕上
jps | awk '{print $1}'

但我希望运行多个进程,我想将它们放在一个数组中。我找到了另一个使用

的例子
awk '{arr[$1]}'

因为他们想要在数组中输出的是一列。这类似于我想要放入数组的PID列。

是否可以将它们管道化为数组?我无法在需要时更改数组的索引。有一个更好的方法吗?

任何指导都会受到热烈欢迎。 感谢。

2 个答案:

答案 0 :(得分:3)

根据您的第一个示例,您应该能够使用

捕获bash数组中的所有进程ID
pids=( $(jps | awk '{print $1}') )

一旦进入数组,就可以迭代它们:

for pid in "${pids[@]}"; do
     echo $pid
done

或单独访问

echo "${pids[0]}"
echo "${pids[1]}"

使用${#pids[@]}找到存储在数组中的总数。

答案 1 :(得分:0)

使用xargs:

ps aux | grep -ie java | awk'{print $ 2}'| xargs echo