Vous pouvez essayer quelque chose comme:
#!/bin/sh
[ -n $1 ] || {
echo "Usage: $0 [url to file to get]" >&2
exit 1
}
wget $1
[ $? ] && {
echo "Could not download $1" | mail -s "Uh Oh" [email protected]
echo "Aww snap ..." >&2
exit 1
}
# If we're here, it downloaded successfully, and will exit with a normal status
Lorsque vous effectuez un script qui (probablement) être appelé par d'autres scripts, il est important de faire ce qui suit:
- Assurez-sanity argument
- Envoyer e-mail, écrire dans un journal, ou faire autre chose que quelqu'un sait ce qui a mal tourné
Le >&2
redirige simplement la sortie des messages d'erreur à stderror
, qui permet à un script appelant à faire quelque chose comme ceci:
foo-downloader >/dev/null 2>/some/log/file.txt
Comme il est une enveloppe courte, aucune raison d'abandonner un peu de bon sens :)
Cela vous permet également de diriger de manière sélective la sortie de wget
à /dev/null
, vous pourriez réellement vouloir le voir lors du test, surtout si vous recevez un e-mail en disant qu'il n'a pas :)
Ok .. pouvez-vous me donner un exemple, donc quand le fichier est téléchargé, le script fait écho "OK" sinon quelque chose comme "FAILED" ... – CyberK
Changé le script pour avoir OK et FAILED en elle. Fait un meilleur exemple. – ojblass
@CyberK: Vous pouvez aussi vouloir supprimer la sortie des wgets: 'wget $ 1 2>/dev/null' – thejh