2016-02-02 4 views
1

Я застрял на чем-то, что, несомненно, имеет простое решение. Я использую почту от GNU mailutils, чтобы периодически отправлять файл журнала соответствующим людям.Расширение переменной Bash

mail -s "The Subject" [email protected] <<< "Message body" 

Теперь я хочу, чтобы включить это в сценарий, который выполняет кучу задач, но я застрять с расширением и котировки.

Это то, что я пытаюсь:

subject="The Subject" 
sender=From:Sender\<[email protected]\> 
[email protected],[email protected],[email protected] 

report="mail -s "$subject" -a $sender $recipient_list" 

... 
$report <<< "A log message from a section of script" 
... 
$report <<< "A different log message" 

Проблема заключается в $ субъекта.
Вызов mail -s "$subject" -a $sender $recipient_list <<< "My Message" работает красиво, но обертывание его в переменную, как я уже делал выше, заканчивает отправку электронной почты с получением только первого слова «Тема», а не всей строки.

Я собираюсь пойти proper function route, но теперь мне любопытно. Я уверен, что какой-то трюк с выходом/расширением сделает это, но я не смог найти правильный (или рассуждать).

Спасибо!

+0

Обязательная ссылка на http://mywiki.wooledge.org/BashFAQ/050. – chepner

+0

@chepner спасибо, но уже в моем первоначальном вопросе – dabell

+0

Вы читаете страницу? Это объясняет, почему ваша попытка вставить кавычки в значение переменной не выполняется. – chepner

ответ

2

Ответ, конечно, use an array.

report=(mail -s "$subject" -a "$sender" "$recipient_list") 

... 

"${report[@]}" <<< "A log message from a section of script" 
+0

Используйте массив ... или используйте функцию ... –

+0

Отметьте как ответ, если вы можете редактировать, чтобы разместить двойные кавычки вокруг $ {report [@]}, как рекомендовано здесь http://stackoverflow.com/questions/13365553/setting-an -argument-with-bash Он не работает правильно без двойных кавычек. – dabell

+0

@ dabell: * facepalm * Упс. Исправлена. –

Смежные вопросы