I'm finding that a call to the mail command is causing a script to suspend without error. To close the script I have to ctrl-c or issue a kill command on the process id.

The pertinent section of the script is below:


if [ -f /www/archives/pdf/pdf_201207021048.tar ]; then
    echo "file exists"
    echo "file does not exist"

echo "sending mail next..."

mail -s "pdfbackup" "$EMAIL_TO"

echo "mail sent?"

When running this, I'm seeing the text "sending mail next..." and nothing more. It never returns to prompt.

I can see the script is still in memory with ps -ax | grep myscript.sh.

I've tried using quotes around the subject and email, and again without. The same result is produced either way.

What am I doing wrong?


The mail program expects the user to type the message on its standard input (terminated by EOF (Ctrl-D)). You are not redirecting stdin, the program is waiting for input. You can either redirect from /dev/null (for an empty message), from a canned file, or from a pipe, for example:

echo Hi, just sending you a message | mail -s "pdfbackup" "$EMAIL_TO"


mail -s "pdfbackup" "$EMAIL_TO" < /dev/null

Both of these should clear up problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.