我正在使用 Ubuntu 和 bash shell。
我无法理解为什么以下命令返回整行而不是仅返回 PID
:
$ ps -ef | awk "{print $2}" | head -3
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 feb18 ? 00:00:32 /sbin/init splash
root 2 0 0 feb18 ? 00:00:00 [kthreadd]
有什么建议吗?
最佳答案
这是一个 shell 引用问题。如果在双引号中,shell 将 "$2"扩展为空字符串,因为它未设置。剩下的 awk '{print }'
将打印整行。
使用单引号防止展开:
ps -ef | awk '{print $2}' | head -3
顺便说一句,您可以使用 ps
命令获取 pid,awk
不是必需的:
ps -efho pid
关于linux - Bash shell 仅从 PS 获取 PID 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42325490/