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

Dan*_*ous 9 command-line shell arguments

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

我试过如下:

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

我知道你可以这样做:

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

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

谢谢!

Kus*_*nda 12

假设pgrep可能返回多个PID:

$ pgrep mycommand | xargs -n 1 lsof -p
Run Code Online (Sandbox Code Playgroud)

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