如果我从命令提示符运行以下命令,它将按预期工作:-
ps -eo pid,command | grep -v bash | grep syslogd | awk '{print $1}'
输出只是 syslogd 进程的 pid。根据 bash 的手册页,使用 -c 参数允许传递命令字符串。所以,我尝试了这个: -
/bin/bash -c "ps -eo pid,command | grep -v bash | grep syslogd | awk '{print $1}'"
不仅打印 syslogd 进程的 pid,还打印 syslogd 的路径:-
19 /usr/sbin/syslogd
有人能解释一下为什么会这样吗?是否可以用这种方式用 bash 调用命令,以便它与直接调用命令时的行为相同并且只打印进程的 pid?