O que sim $ (sim sim) faz?

19

Pensando em como usar o comando yes , me deparei com comentário e tentou executar

yes $(yes yes)

Pelo que entendi, isso deve simplesmente imprimir uma seqüência infinita de yes , mas em vez disso, nada sai e trava meu terminal gráfico depois de alguns segundos. (Se eu executar em tty1, eu vejo o prompt de login depois de algum tempo.)

O que está acontecendo aqui?

    
por heinrich5991 10.11.2013 / 13:11

2 respostas

21

Já deve ser o suficiente para rodar

 echo $(yes yes)

O $(...) executa o comando interno até terminar e captura toda a sua saída. - Agora, como yes é executado por muito tempo e gera muita saída, o bash acabará ficando sem memória e travando.

    
por 10.11.2013 / 13:41
3

Para ver a mensagem do erro que fecha seu shell, você precisa executar um sub-shell.

$ sh
$ kill -9 $$
Killed
$

$ sh
$ yes $(yes yes)
sh: xrealloc: cannot allocate 18446744071562067968 bytes
$
    
por 10.11.2017 / 22:34

Tags