GNU/Linux >> Linux Esercitazione >  >> Linux

Lo script della shell si blocca sul comando di posta?

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.


Linux
  1. Come passare un argomento della riga di comando in uno script di shell?

  2. È possibile far interagire uno script di shell bash con un altro programma a riga di comando?

  3. Modifica lo script della shell mentre è in esecuzione

  4. Come memorizzare un comando in una variabile in uno script di shell?

  5. Comando Linux per verificare se uno script di shell è in esecuzione o meno

Comprendere facilmente i comandi della shell utilizzando lo script "Explain Shell" in Linux

Come eseguire il comando / script della shell di Linux in background

Come memorizzare un comando Linux come variabile nello script della shell

Shell dei comandi

Come eseguire un comando in uno script della shell?

Libreria di output di script di shell colorata