【发布时间】:2013-02-12 20:23:16
【问题描述】:
我遇到了一个小问题。我有一个将输出通过管道传输到 awk 的命令,但我想将输出一个一个地捕获到一个数组中。
我的例子:
myarr=$(ps -u kdride | awk '{ print $1 }')
但这会将我的所有输出捕获到一个用逗号分隔的巨大字符串中:
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 -o pid) )完全跳过awk命令。 (请注意保罗的回答中指出的额外括号)。