Sai do terminal e executa um comando.

0

Eu quero sair do terminal atual e executar um comando. É possível fazer?

PS :: Suponha que eu tenha feito um loop while true; do bash;done

    
por prado 28.11.2016 / 10:25

1 resposta

0

Você poderia executá-lo em um subshell com uma armadilha apropriada. Por exemplo, se você quisesse executar echo -e '\nCommand done no final de um while true; do true; done , você poderia usar isto:

mario@mario-K53SV:~$ (trap 'echo -e "\nCommand done"' EXIT; while true; do true; done)

O trap registra o comando que você definiu no evento EXIT do subshell. Os parênteses são necessários para criar uma subcamada. Esteja ciente de que, caso queira generalizar isso e colocar seus comandos em variáveis (por exemplo, MY_COMMAND='while true; do true; done' ), você precisará de eval para executá-los corretamente. Este exemplo de saída mostra exatamente onde é útil (sem eval, isso não funcionaria):

mario@mario-K53SV:~$ YOUR_COMMAND="while true; do true; done"
mario@mario-K53SV:~$ EXECUTE_ON_EXIT="echo -e '\nCommand done'"
mario@mario-K53SV:~$ (trap 'eval ${EXECUTE_ON_EXIT}' EXIT; eval ${YOUR_COMMAND})
^C
Command done

mario@mario-K53SV:~$

Se desejar, isso também pode ser usado para fechar automaticamente o terminal , no final do comando do manipulador EXIT: basta incluir kill -s SIGHUP $$ no final do seu manipulador (por exemplo, EXECUTE_ON_EXIT="echo -e '\nCommand done'; kill -s SIGHUP $$" ).

    
por 28.11.2016 / 15:52