web-dev-qa-db-ja.com

次のコマンドの引数としてパイプで連結されたstdinを使用する

コマンドの出力を別のコマンドのパラメーターとして使用するにはどうすればよいですか?私の具体的な例は、pgrepを使用してプロセスの[〜#〜] pid [〜#〜]を取得し、それをの_-p_オプションに渡したいというものです。 lsof

私は次のようなことを試しました:

  • _pgrep myprocess | lsof -p /dev/stdin_
  • _pgrep myprocess | lsof -p -_

私はあなたがこのようにそれをすることができることを知っています:

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

しかし、それを行うためのより良い方法がなければなりません。おそらくxargsか何か?きれいなものが見つからなかったので、よろしくお願いします。

ありがとう!

5
Daniel Porteous

pgrepが複数のPIDを返す可能性があると仮定します。

$ pgrep mycommand | xargs -n 1 lsof -p

これにより、PIDごとに、PIDが追加されたlsof -pが実行されます。

4
Kusalananda