希望您过得愉快。
目的是将一些正在运行的进程的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数组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$$
$1
结尾的任何行”。cut
仅采用第一个参数,它是每个进程的PID。tee
将中间输出发送到文件进行打印(可选)。printf
满足您的“进一步使用”要求。