Lorsque j'essaie d'exécuter mail
de l'intérieur d'une fonction dans un script bash, cela crée quelque chose de similaire à une bombe fork. Pour clarifier, cela crée le problème:
#!/bin/bash
mail() {
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
}
mail
exit 0
Parfois, vous pouvez simplement tuer la commande et cela tuera les processus enfants, mais parfois vous devrez le faire killall -9
.
Peu importe que le courrier ait été envoyé ou non. La bombe à fourche est créée de toute façon. Et il ne semble pas que l'ajout d'une vérification du code de sortie, tel que if ! [ "$?" = 0 ]
, aide.
Mais le script ci-dessous fonctionne comme prévu, soit il génère une erreur, soit il envoie le courrier.
#!/bin/bash
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
exit 0
Pourquoi cela arrive-t-il? Et comment procéder pour vérifier le code de sortie de la commande mail?