Si potrebbe provare qualcosa di simile:
#!/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
Quando si effettua uno script che (probabilmente) essere chiamato da altri script, è importante effettuare le seguenti operazioni:
- Garantire argomento sanità mentale
- Invia e-mail, scrivere su un registro, o fare qualcos'altro in modo che qualcuno sa che cosa è andato storto
Il >&2
reindirizza semplicemente l'output di messaggi di errore a stderror
, che permette uno script chiamata a fare qualcosa di simile:
foo-downloader >/dev/null 2>/some/log/file.txt
Poiché si tratta di una breve involucro, nessuna ragione ad abbandonare un po 'di sanità mentale :)
Questo permette anche di dirigere selettivamente l'uscita del wget
a /dev/null
, si potrebbe effettivamente vuole vedere durante il test, soprattutto se si ottiene una e-mail dicendo che non è riuscito :)
fonte
2010-11-07 17:55:02
Ok .. puoi fornirmi un esempio, quindi quando il file viene scaricato, lo script echo "OK" altro come "FAILED" ... – CyberK
Modificato lo script per avere OK e FAILED in esso. Ne ha fatto un esempio migliore. – ojblass
@CyberK: Si preferisce anche sopprimere l'output di wgets: 'wget $ 1 2>/dev/null' – thejh