Saya menemukan bahwa panggilan ke perintah email menyebabkan skrip ditangguhkan tanpa kesalahan. Untuk menutup skrip saya harus ctrl-c atau mengeluarkan perintah kill pada id proses.
Bagian yang sesuai dari skrip di bawah ini:
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?"
Saat menjalankan ini, saya melihat teks "mengirim email berikutnya ..." dan tidak lebih. Itu tidak pernah kembali ke prompt.
Saya dapat melihat skrip masih dalam memori dengan ps -ax | grep myscript.sh.
Saya sudah mencoba menggunakan kutipan di sekitar subjek dan email, dan sekali lagi tanpa. Hasil yang sama dihasilkan dengan cara apa pun.
Apa yang saya lakukan salah?
Jawaban yang Diterima:
mail
program mengharapkan pengguna untuk mengetik pesan pada input standarnya (dihentikan oleh EOF (Ctrl-D )). Anda tidak mengarahkan stdin, program sedang menunggu input. Anda dapat mengalihkan dari /dev/null
(untuk pesan kosong), dari file kaleng, atau dari pipa, misalnya:
echo Hi, just sending you a message | mail -s "pdfbackup" "$EMAIL_TO"
atau
mail -s "pdfbackup" "$EMAIL_TO" < /dev/null
Kedua hal ini harus menyelesaikan masalah.