将PS命令的结果中的PID存储到数组中

问题描述 投票:0回答:1

希望您过得愉快。

目的是将一些正在运行的进程的PID写入数组以供进一步使用。

Function()
{

    declare -a arr

    ps -e -o pid,%mem,command |

    awk -v val="$1" '{if($3 == val) print $1,$2,$3; $arr+=($1)}'
}

似乎我无法访问awk中的数组/变量。

非常感谢您的帮助!

bash awk ps
1个回答
0
投票

Bash数组arr在awk内部甚至在函数外部均不可访问。似乎您正在ps输出中过滤特定的commands。因此,我们将其简化为:

declare -a arr=( $(ps -e -o pid,%mem,command | grep "$1\$" | tee /tmp/pid$$ | cut -c-5) )
printf '%s\n' "${arr[@]}"
cat /tmp/pid$$
  • 这将值分配给声明中的数组。
  • 数组值取自ps / grep / cut命令的输出
  • grep的参数寻找“以$1结尾的任何行”。
  • cut仅采用第一个参数,它是每个进程的PID。
  • tee将中间输出发送到文件进行打印(可选)。
  • printf满足您的“进一步使用”要求。
© www.soinside.com 2019 - 2024. All rights reserved.