Como sair do loop infinito no terminal pai?

1

Para testar o comando trap , criei o seguinte loop no terminal:

while true ; do echo BEGIN ; bash -e ; echo "exit code = $?" ; echo END ; done

Como sair desse loop e voltar para o shell pai?

No caso de usar o shell remoto ( ssh ) em vez de bash , há um atraso durante o processo de estabelecimento da conexão quando eu posso pressionar Ctrl + C . Mas no caso acima eu não posso ser rápido o suficiente para pegar a janela de tempo.

    
por Orient 19.01.2018 / 08:08

1 resposta

2

Nesse caso, sair do shell filho faz com que outro shell filho apareça imediatamente. Para quebrar o loop, execute isso de dentro do shell filho:

kill -s SIGINT $PPID

Em seguida, saia do shell filho ( exit ou Ctrl + D ). $PPID garante que o sinal chegue ao shell pai (sem tocar com ps e adivinhando).

    
por 19.01.2018 / 09:57