Qual é a diferença essencial entre o grep foo $ (CMD) e o CMD | grep foo

1

É muito importante porque intuitivamente são todos semelhantes para mim.

Poderia se perceber que esses dois são realmente um para o outro, ou seja, absolutamente iguais?

    
por Xsi 20.11.2012 / 20:57

1 resposta

8

Eles não fazem a mesma coisa. O primeiro é a substituição de comando, o último é a tubulação. O resultado é completamente diferente.

grep foo "$(echo foo)" procurará a palavra "foo" em um arquivo chamado "foo", porque "foo" é a saída de echo . echo foo | grep foo procurará a palavra "foo" da sua entrada STDIN . No primeiro caso, você provavelmente obterá um erro de arquivo não encontrado. No último caso, você não vai. Eles não são fundamentalmente a mesma operação.

    
por 20.11.2012 / 21:00