Não, eles não são iguais. Considere o comando echo
. Você espera que
echo hello asleea
e
printf "asleaa\n" | echo hello
para produzir a mesma coisa? No caso top ... $(...)
, o shell executa primeiro o material dentro de $(...)
e coloca a saída na lista de argumentos para quando executa top
.
É claro que top
poderia ser escrito para ler valores adicionais de stdin se você deu a ele um flag que requer um argumento mas não deu um, mas não é assim que é implementado .