GNU/Linux >> Tutoriales Linux >  >> Linux

¿La secuencia de comandos de Shell se bloquea en el comando de correo?

Descubrí que una llamada al comando de correo está causando que un script se suspenda sin error. Para cerrar la secuencia de comandos, tengo que pulsar ctrl-c o emitir un comando de eliminación en la identificación del proceso.

La sección pertinente del guión se encuentra a continuación:

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

Al ejecutar esto, veo el texto "enviando correo a continuación..." y nada más. Nunca vuelve al indicador.

Puedo ver que el script todavía está en la memoria con ps -ax | grep myscript.sh.

Intenté usar comillas alrededor del asunto y el correo electrónico, y nuevamente sin ellas. Se produce el mismo resultado de cualquier manera.

¿Qué estoy haciendo mal?

Respuesta aceptada:

El mail programa espera que el usuario escriba el mensaje en su entrada estándar (terminado por EOF (Ctrl-D )). No está redirigiendo la entrada estándar, el programa está esperando una entrada. Puede redirigir desde /dev/null (para un mensaje vacío), desde un archivo enlatado o desde una canalización, por ejemplo:

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

o

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

Ambos deberían solucionar el problema.


Linux
  1. ¿Cómo pasar un argumento de línea de comando a un script de Shell?

  2. ¿Comportamiento inesperado de un script de Shell?

  3. ¿Cómo saber si la salida de un comando o script de Shell es Stdout o Stderr?

  4. ¿Es posible hacer que un script bash shell interactúe con otro programa de línea de comandos?

  5. Edite el script de shell mientras se está ejecutando

Comprender fácilmente los comandos de Shell usando el script "Explain Shell" en Linux

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo almacenar un comando de Linux como una variable en el script de Shell

Construcción de comandos

¿Cómo ejecutar un comando en un script de Shell?

Biblioteca de salida de scripts de shell de colores