如何在Bash中提取ps命令输出的指定字段获取目标进程PID
提取目标PID并赋值变量的实现方案
方法1:基于你现有命令修改
你已有的命令已经筛选出目标进程行,只需在管道末尾追加awk提取第二列即可,变量赋值语法兼容bash和标准sh环境:
TERMINAL_PID=$(ps -eF|grep -F 'gnome-terminal-server'|grep -E '^content'|head -n1|awk '{print $2}')
赋值完成后可执行echo $TERMINAL_PID验证结果是否正确。
方法2:更精简高效的实现
可以直接用awk一次性完成匹配、筛选、提取操作,减少多余进程开销,默认取到的首个结果就是最小PID:
TERMINAL_PID=$(ps -eF | awk '$1 == "content" && /\/gnome-terminal-server$/ {print $2; exit}')
参数说明:
$1 == "content"匹配第一列用户名为content的进程行/\/gnome-terminal-server$/匹配进程路径末尾为gnome-terminal-server的行,避免误匹配到带有关键字的grep进程本身exit匹配到第一条符合要求的行后直接退出,保证取到的是最小PID
内容的提问来源于stack exchange,提问作者paladin
相关产品推荐
相关产品推荐

