如何使用一个命令的输出作为另一个命令的参数?我的具体例子是我想得到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 的情况下运行。