Bash变量扩展

时间:2016-02-02 18:52:16

标签: bash

我遇到了一些肯定有简单解决方案的问题。我正在使用来自GNU mailutils的邮件定期向相关人员发送日志文件。

mail -s "The Subject" someone@example.com <<< "Message body"

现在我想将它合并到一个执行大量任务的脚本中,但我对扩展和引号感到困惑。

这就是我正在尝试的:

subject="The Subject"
sender=From:Sender\<someone@example.com\>
recipient_list=me@example.com,another@example.com,yetanother@example.com

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

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

问题在于$ subject 调用mail -s "$subject" -a $sender $recipient_list <<< "My Message"可以很好地工作,但是如上所述将其包装到变量中最终会发送电子邮件,只发送“主题”的第一个单词,而不是整个字符串。

我要去proper function route,但现在我很好奇。 我确定一些逃避/扩展技巧会做到这一点,但我找不到正确的(或推理出来)。

谢谢!

1 个答案:

答案 0 :(得分:2)

答案当然是use an array

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

 ...

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