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:

EMAIL_TO="[email protected]"

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?


1 Answer 1


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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .