Como posso salvar o resultado do comando mailx no unix para ler mensagens em um arquivo de texto?

0

Eu quero salvar as mensagens não lidas em um arquivo de texto no UNIX usando um script de shell. Este script de shell é executado freqüentemente usando o crontab. Eu tentei com o código abaixo:

#!/bin/ksh

mailx > mytest.txt
if grep 'unread' mytest.txt
then echo "hello" 
else echo "bye"
fi

Ao executar o script de shell diretamente de um servidor, posso ver o arquivo de texto salvo com o resultado. Mas a execução pára depois disso.

Qual é o problema?

    
por devjith 09.08.2018 / 08:42

1 resposta

0

Se mailx detectar uma mensagem não lida, ela entrará no modo interativo e aguardará o envio de comandos interativos para leitura, salvamento, resposta, etc.

Você pode redirecionar /dev/null para mailx para que ele saia imediatamente:

if mailx </dev/null | grep -q 'unread'; then
    echo 'there is unread mail'
else
    echo 'there is no unread mail'
fi

O comportamento disso pode depender da implementação exata de mailx (difere um pouco entre Unices).

    
por 09.08.2018 / 09:17