GNU/Linux >> Znalost Linux >  >> Linux

Skript Shell visí na příkazu Mail?

Zjistil jsem, že volání příkazu mail způsobuje pozastavení skriptu bez chyby. K uzavření skriptu musím ctrl-c nebo zadat příkaz kill na id procesu.

Příslušná část skriptu je níže:

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?"

Když to spustím, vidím text „odesílám poštu příště…“ a nic víc. Nikdy se nevrátí na výzvu.

Vidím, že skript je stále v paměti pomocí ps -ax | grep myscript.sh.

Zkoušel jsem používat uvozovky kolem předmětu a e-mailu a znovu bez. Stejný výsledek je dosažen v obou směrech.

Co dělám špatně?

Přijatá odpověď:

mail program očekává, že uživatel napíše zprávu na svůj standardní vstup (ukončený EOF (Ctrl-D )). Nepřesměrováváte stdin, program čeká na vstup. Můžete buď přesměrovat z /dev/null (pro prázdnou zprávu), z předpřipraveného souboru nebo z roury, například:

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

nebo

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

Obojí by mělo problém vyřešit.


Linux
  1. Odesílání HTML pošty pomocí shell skriptu

  2. Zkontrolujte konektivitu databáze pomocí skriptu Shell

  3. Odeslání pošty z linuxového shell skriptu

  1. Příkaz Linux pro kontrolu, zda je spuštěn skript shellu nebo ne

  2. Automatizujte mysql_secure_installation pomocí příkazu echo pomocí skriptu shellu

  3. Iterujte přes proměnnou $PATH pomocí skriptu shellu

  1. Jak předat argument příkazového řádku do skriptu Shell?

  2. Neočekávané chování skriptu Shell?

  3. Shell skript s funkcí a parametrem jako proměnnými?