Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash将awk的输出捕获到数组中_Linux_Arrays_Bash - Fatal编程技术网

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

Linux Bash将awk的输出捕获到数组中,linux,arrays,bash,Linux,Arrays,Bash,我被一个小问题缠住了。我有一个命令,可以将输出传输到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,但我希望逐个捕获到阵列的输出

我的例子是:

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 | 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的内置(或其同义词
readarray


啊,非常感谢。我完全跳过了那部分。参考资料有助于多谢:什么是重点:之后做什么?为什么我们需要一个真实的答案?我在没有它的情况下运行了它,但它仍然工作?我也很好奇为什么会有一个
我也很好奇为什么会有一个:请告诉我们您可以使用
myarr=($(ps-u kdride-o pid))跳过
awk
命令。(注意保罗在回答中指出的附加括号)。
mapfile -t -s 1 myarr < <(ps -u myusername | awk '{print $1}')
mapfile -t myarr < <(ps -u myusername -o pid=)