Use stdin canalizado como argumento para o próximo comando

4

Como eu uso a saída de um comando como um parâmetro em outro comando? Meu exemplo específico é que eu quero pegar o PID de um processo usando pgrep e passá-lo para a opção -p de lsof .

Eu tentei coisas como as seguintes:

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

Eu sei que você pode fazer assim:

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

Mas tem que haver uma maneira melhor de fazer isso. Talvez xargs ou algo assim? Eu não consegui encontrar algo limpo, então agradeço qualquer ajuda.

Obrigado!

    
por Daniel Porteous 28.11.2016 / 06:32

1 resposta

3

Assumindo que pgrep pode retornar vários PIDs:

$ pgrep mycommand | xargs -n 1 lsof -p

Isso, para cada PID, executará lsof -p com o PID anexado.

    
por 14.02.2017 / 22:13