Включить разрывы строк при назначении многострочных выходов для var в bash

Я использую следующий очень простой сценарий оболочки, который я скопировал с сети, чтобы перечислить содержимое папки базы данных и регулярно отправлять их по почте:

MYSQLLIST=$(ls -lhG /var/backups/mysql/daily/) SUBJECT="daily backup finished" EMAIL="logging@localhost" EMAILMESSAGE="/tmp/emailmessage.txt" echo "dailybackup.sh ran successfully" > $EMAILMESSAGE echo "MYSQL:" >> $EMAILMESSAGE echo $MYSQLLIST >> $EMAILMESSAGE mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE 

Однако – независимо от почтового читателя – по почте, который я получаю, нет строк разрывов между строками вывода ls , что делает сообщение ужасно трудным для чтения. Как я могу создавать разрывы строк, идентичные тем, которые я получаю при выполнении ls -lhG на оболочке?

    Попробуйте отбросить команду sutstitution, которая заполняет переменную, а затем возвращает ее обратно и просто перенаправляет вывод ls прямо в файл сообщения.

     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 

    Изменить : вы можете очистить этот скрипт точно таким же образом:

     ( echo "dailybackup.sh ran successfully" echo "MYSQL:" ls -lhG /var/backups/mysql/daily/ ) | mail -s "Daily backup finished" "logging@localhost" 

    Это выполняет несколько команд в подоболочке, а затем направляет весь вывод из подоболочки прямо в mail без суеты записи временного файла.