使用管道标准输入作为下一个命令的参数

使用管道标准输入作为下一个命令的参数

如何使用一个命令的输出作为另一个命令的参数?我的具体例子是我想得到PID的进程使用pgrep并将其传递给-p的选项lsof

我尝试过类似以下的事情:

  • pgrep myprocess | lsof -p /dev/stdin
  • pgrep myprocess | lsof -p -

我知道你可以这样做:

pid=$(pgrep myprocess) && lsof -p "$pid"

但必须有更好的方法来做到这一点。也许xargs或者什么?我一直无法找到干净的东西,所以我将不胜感激任何帮助。

谢谢!

答案1

假设pgrep可能返回多个PID:

$ pgrep mycommand | xargs -n 1 lsof -p

对于每个 PID,这将lsof -p在附加 PID 的情况下运行。

相关内容