auto-script de shell de matança

1

Estou tentando um teste simples para matar um script de dentro de si mesmo. Não parece estar funcionando.

function testKill
{
  PID=$$
  kill $PID
  echo  hello!
}

Quando eu executo esta função,

[....]$ testKill
hello!

Isso claramente não mata o processo. Como eu faço o processo terminar antes de enviar o comando echo?

Quando eu movo tudo isso para um script externo, ele termina corretamente se eu chamar o script diretamente da linha de comando. No entanto, se eu fizer uma função dentro de meu .bash_profile e chamar o script de dentro dessa função, o script não será morto e será impresso. Como faço para integrá-lo ao meu .bash_profile?

Este é um exemplo mínimo de trabalho para usar em um script mais complicado.

    
por avikarto 03.07.2017 / 23:20

2 respostas

6

Você não escreveu um script no seu exemplo; é uma função. Portanto, você está aplicando o kill à sua sessão de shell interativa. Os shells interativos ignoram a maioria dos sinais, incluindo o SIGTERM que você está enviando.

Coloque a função e sua chamada em um script e execute-a. É muito mais provável que você faça o que espera.

    
por 04.07.2017 / 02:05
0

tente seguir, se você quiser usá-lo como função diretamente no bash, respectivamente proveniente do console.

function testKill
{
  kill $PPID
  echo  "no hello :-/"
}
    
por 06.07.2017 / 20:50