我遇到了一些肯定有简单解决方案的问题。我正在使用来自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,但现在我很好奇。 我确定一些逃避/扩展技巧会做到这一点,但我找不到正确的(或推理出来)。
谢谢!
答案 0 :(得分:2)
答案当然是use an array。
report=(mail -s "$subject" -a "$sender" "$recipient_list")
...
"${report[@]}" <<< "A log message from a section of script"