【问题标题】:How to use echo inside another echo [duplicate]如何在另一个回声中使用回声[重复]
【发布时间】:2024-01-24 06:44:01
【问题描述】:

我希望在我的 bash 脚本中使用 echo 命令。

其实我就是这样=>

echo --- REPORT ---
echo - Report send @ $(date +%d-%m-%y_%H:%M)
echo "echo \"Subject: BACKUP-$serv\"" | cat $cheminlogs/backup-$serv.log | /opt/zimbra/postfix/sbin/sendmail -r $mail1 $mail2;   
echo - Report done @ $(date +%d-%m-%y_%H:%M)

但是当我调用我的 sh 文件时这不起作用,它会打印 echo linke 但不会将电子邮件发送到第 3 行命令中

如果我单独使用我的命令没关系

echo "Subject: BACKUP-$serv" | cat $cheminlogs/backup-$serv.log | /opt/zimbra/postfix/sbin/sendmail -r $mail1 $mail2;

我不知道如何在新命令的开头使用 echo

也许我可以通过反转参数更改我的电子邮件命令,但那是给我发送一封没有 textarea cat 的电子邮件

cat $cheminlogs/backup-$serv.log | echo "Subject: BACKUP-$serv" | /opt/zimbra/postfix/sbin/sendmail -r $mail1 $mail2;

【问题讨论】:

  • 下面用 printf 的答案对我不起作用,最后我找到了如何逃避回声,通过这种方式可以正常工作 => echo 'Subject:' "BACKUP-$serv" |猫-“$cheminlogs/backup-$serv.log”| /opt/zimbra/postfix/sbin/sendmail -r $mail1 $mail2

标签: bash ssh echo sendmail


【解决方案1】:

你要找的表格是

printf 'Subject: %s\n\n' "$subject" | cat - "$server_log" | sendmail

- 表示“从标准输入读取”。请注意,sendmail 将在标头和消息正文之间留一个空行。

【讨论】:

  • echo -e 一点也不便携——比如printf 'Subject: %s\n\n' "$subject" 更好用。请参阅pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html 的 POSIX echo 规范的应用程序使用部分。同样重要的是,这意味着您可以在主题内发送带有反斜杠的消息,而无需 echo 破坏它们。
  • @CharlesDuffy 谢谢,已更正!