como usar saída padrão de vários comandos como argumentos de arquivo

0

Eu quero comparar a saída de 2 comandos.

Por exemplo:

$ command1 arguments1 > tempfile1
$ command2 arguments2 > tempfile2
$ diff tempfile1 tempfile2 > savefile
$ rm tempfile1 tempfile2

Existe uma maneira inteligente de fazer isso? Espero que em uma linha, e sem a necessidade de arquivos temporários.

Então, seria algo como (mas obviamente não exatamente isso):

$ diff $(command1 arguments1) $(command2 arguments2) > savefile

As informações da minha máquina são:

$ uname -a
Linux host.name 3.2.54 #9 SMP Thu Feb 13 08:17:11 CST 2014 x86_64 GNU/Linux

$ which sh
/bin/sh
    
por Kevin Fegan 24.05.2014 / 23:38

1 resposta

0

No bash, você pode usar a substituição de processos:

diff <(command1 arguments1) <(command2 arguments2) > savefile

Note que isto não funcionará em sh simples (ou mesmo bash em "modo posix", isto é, quando chamado sob o nome "sh" e desativa alguns recursos para compatibilidade). Está disponível em zsh, no entanto.

    
por 25.05.2014 / 01:56