Echo ne fonctionne pas dans un script

Résolu/Fermé
GurrenDan - 7 oct. 2010 à 19:01
 GurrenDan - 7 oct. 2010 à 19:19
Bonjour,

Je suis en train de faire un petit script qui va servir a envoyer des mails en masse (dit comme ca c'est vrai on dirait du spam... en fait c'est pour une recherche d'emploi, je dois écrire +de 100 mails, la première fois je lai fait a la main et j'ai mis la journée... donc je préviens au cas ou : les mails partirons que je reçoive de l'aide ou pas, ne perdez pas votre temps a me dire que le spam c'est mal, ce que je sait déjà)
Mon script est fonctionnel, les mails partent bien (pour les tests j'utilise mes adresses perso), pas de problème.

Par contre j'aimerais vérifier (quand j'utiliserai la vrai liste de mails) que tout s'est bien déroulé sans erreur.

J'utilise mutt + msmtp comme ceci :

#! /bin/bash
while read line
do
mutt -s "mon-sujet" -a *.doc *.pdf -- $line <corps.txt || echo "le mail a bien été envoyé a $line !"
done < emails.txt

Le script s'apelle scriptmail.sh
corps.txt est le corps de l'email
emails.txt est la liste des adresses emails a contacter

Le problème est que lorsque j'entre "sh scriptmail.sh" dans ma console, ca mouline, puis le shell me rends la main... mais aucune trace de mon "echo"
Si jamais il se produit une erreur (par exemple un bannissement du SMTP de mon FAI, ce qui est le plus probable) je n'en serait pas informé... :(

Merci de votre aide !

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
7 oct. 2010 à 19:04
Salut,

Mets && à la place de || et ça devrait aller mieux ;-))

0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
7 oct. 2010 à 19:07
Par contre il serait plus judicieux de le laisser comme il est en rajoutant juste :

mutt -s "mon-sujet" -a *.doc *.pdf -- $line <corps.txt || echo "le mail n'a pas été envoyé a $line !"
done < emails.txt 

Afin de contrôler les erreurs ;-))
0
en fait "d'après ce que j'ai compris" la commande qui suit || est exécutée seulement si la commande précédente ne renvoie pas d'erreur, alors que si je met && l'echo sera exécuté quoiqu'il arrive.
c'est justement grâce a || que je vérifie si tout s'est bien passé !

Le problème est que la le echo n'est pas visible alors que la commande d'envoi s'exécute bien sans erreur (les mails arrivent bien dans mes boites de test)

Tu me corriges si je me trompes ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
7 oct. 2010 à 19:09
&& si vrai (pas d'erreur)
|| si faux (erreur)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
7 oct. 2010 à 19:12
[jp@MDK-2010 tmpfs]$ ls cap* && echo "C'est bon"
C'est bon
[jp@MDK-2010 tmpfs]$ ls Kap* 2>/dev/null && echo "C'est bon"

[jp@MDK-2010 tmpfs]$ ls Kap* 2>/dev/null || echo "C'est pas bon"
C'est pas bon

[jp@MDK-2010 tmpfs]$

;-))
0
que dire ?? parfait ! ;)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
7 oct. 2010 à 19:17
que dire ?
Le SPAM c'est pas bien ;-(

;-)
0
aussi ^^
script a utiliser avec précaution, mais qui va m'économiser une journée et une tendinite du doigt !
xD
0
Comme ca c'est beaucoup plus clair merci beaucoup ! =)
0