linux - Bash shell 仅从 PS 获取 PID 不起作用

标签 linux bash shell ubuntu

我正在使用 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/

相关文章:

linux - 如何知道执行给定脚本的进程的进程ID?

ios - 如何从终端(osascript)设置文件夹操作?

linux - 在 Linux 上提取两个字符串之间的子字符串

c - 如何在 C 中正确写入 bash fifo?

shell 脚本: Menu driven script taking in multiple options

linux - yum 更新显示已安装的软件包版本

linux - 何时在 shell IF 条件下使用 -f 和 -z

linux - 使用 bash 历史记录获取先前的命令,复制它,然后 'run' 它但命令注释

bash - 用于动态添加文件的 shell 脚本的配置文件 -ubuntu

linux - 如何将当前时间的目录作为 SLURM 日志路径的一部分