Tente soltar o comando sutstitution que recheia uma variável e, em seguida, faz o eco de volta e apenas redireciona a saída de ls
diretamente para o arquivo de mensagens.
SUBJECT="daily backup finished"
EMAIL="logging@localhost"
EMAILMESSAGE="/tmp/emailmessage.txt"
echo "dailybackup.sh ran successfully" > $EMAILMESSAGE
echo "MYSQL:" >> $EMAILMESSAGE
ls -lhG /var/backups/mysql/daily/ >> $EMAILMESSAGE
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
Editar : você pode limpar ainda mais esse script exatamente com o mesmo resultado assim:
(
echo "dailybackup.sh ran successfully"
echo "MYSQL:"
ls -lhG /var/backups/mysql/daily/
) | mail -s "Daily backup finished" "logging@localhost"
Isso executa alguns comandos em um subshell e direciona toda a saída do subshell diretamente para mail
, sem a necessidade de escrever um arquivo temporário.