No bash (e em muitos outros shells), $()
é usado para obter a saída de um comando e usá-lo como os argumentos de outro comando.
Aqui, o que acontece é:
Primeiro execute cat
:
1
2
3
Em seguida, substitua o bloco $()
por:
echo 1
2
3
Agora, o shell precisa interpretar essa entrada e enviar argumentos corretos para echo
. Para isso, deve dividir 1
, 2
e 3
em palavras: é aqui que as novas linhas são removidas.
Finalmente, o shell envia o seguinte:
Programa: echo
Argumentos: 1
2
3
Isso exibirá o que você viu:
1 2 3
Porque quando echo
tem vários argumentos, exibe todos eles separados por espaço.