Quando tento executar mail
de dentro de uma função em um script bash, ele cria algo semelhante a uma fork fork. Para esclarecer, isso cria o problema:
#!/bin/bash
mail() {
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
}
mail
exit 0
Às vezes você pode simplesmente matar o comando e isso mata os processos filhos, mas às vezes você precisa killall -9
.
Não importa se o email foi enviado ou não. A bomba dos garfos é criada de qualquer maneira. E não parece adicionar nenhuma verificação do código de saída, como if ! [ "$?" = 0 ]
ajuda.
Mas o script abaixo funciona conforme o esperado, ou gera um erro ou envia o email.
#!/bin/bash
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
exit 0
Por que isso acontece? E como você verificaria o código de saída do comando mail?