sendmail 是否可以不使用通过管道传输到它的 bash 子 shell 的所有输出?

sendmail 是否可以不使用通过管道传输到它的 bash 子 shell 的所有输出?

( GNU bash,版本 4.2.50(1)-release (powerpc-ibm-aix6.1.2.0))

(
echo "a"
echo "b"
echo "c"
)| sendmail -F "Sender" [email protected]

这在 .sh 文件内运行,日志(使用 -x 选项运行时)显示 sendmail之前的 .sh文件echo "c"

我正在尝试调试为什么 sendmail 偶尔会失败。由于子shell和sendmail并行运行,sendmail是否有可能不等待整个子shell结束,而只使用部分输出,直到echo b继续发送不完整的电子邮件然后失败? (虽然 stderr 中没有错误消息,但对于某些执行,电子邮件只是神秘地没有出现在我的收件箱中)

有关更多上下文:我上面写的 echo 命令只是占位符,我实际上正在尝试准备一封电子邮件,如本答案所示https://stackoverflow.com/a/3335377/11521011并将其通过管道传递给sendmail

答案1

您尚未使用-iinsendmail的命令行选项。

如果没有它,sendmail则将“仅单点行”视为消息结尾。

相关内容