Sto scoprendo che una chiamata al comando di posta sta causando la sospensione di uno script senza errori. Per chiudere lo script devo ctrl-c o emettere un comando kill sull'id del processo.
La sezione pertinente dello script è di seguito:
EMAIL_TO="[email protected]"
if [ -f /www/archives/pdf/pdf_201207021048.tar ]; then
echo "file exists"
else
echo "file does not exist"
fi
echo "sending mail next..."
mail -s "pdfbackup" "$EMAIL_TO"
echo "mail sent?"
Durante l'esecuzione di questo, vedo il testo "invio della posta dopo..." e nient'altro. Non torna mai al prompt.
Vedo che lo script è ancora in memoria con ps -ax | grep mioscript.sh.
Ho provato a usare le virgolette intorno all'oggetto e all'e-mail, e di nuovo senza. Lo stesso risultato viene prodotto in entrambi i casi.
Cosa sbaglio?
Risposta accettata:
La mail
il programma si aspetta che l'utente digiti il messaggio sul suo input standard (terminato da EOF (Ctrl-D )). Non stai reindirizzando stdin, il programma è in attesa di input. Puoi reindirizzare da /dev/null
(per un messaggio vuoto), da un file fisso o da una pipe, ad esempio:
echo Hi, just sending you a message | mail -s "pdfbackup" "$EMAIL_TO"
o
mail -s "pdfbackup" "$EMAIL_TO" < /dev/null
Entrambi dovrebbero risolvere il problema.