邮件 bash 变量在新行
mail bash variable on a new line
echo $d 产生下面的输出,在每个';'之后用换行分隔
REVOKE ALL ON URI 'hdfs://nameservice/data/ed_bos_reporting_stg' FROM ROLE ed_bos_reporting;
REVOKE ALL ON URI 'hdfs://nameservice/data/fq' FROM ROLE ed_edw_telephony_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/fq' FROM ROLE edw_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/standard_register_mail_piece' FROM ROLE standard_register_mail_piece_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/tenant/ed_edw/LSFE_CDC/target_files' FROM ROLE edw_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/tenant/ed_standard_register_mail_piece_stg' FROM ROLE ed_standard_register_mail_piece_rw;
当我在邮件命令中输入 $d -
echo "$d" | mail -s "subject" -r "Name<Name@somewhere.com >" first.last@somewhere.com
结果没有换行分隔。
我试过:
echo -e "$d\n" | mail -s "subject" -r "Name<Name@somewhere.com >"
echo -e "$d" $'\n' | mail -s "subject" -r "Name<Name@somewhere.com >"
还有其他一些运气不好的人。任何 suggestions/leads 文档将不胜感激。
更新
这在 gmail 中工作正常。但是不在 Outlook 中
如果您希望在某个字符上用换行符分隔输出,tr
非常适合:
echo "$d" | \
mail -s "subject" -r "Name<Name@somewhere.com >" first.last@somewhere.com | \
tr ';' $'\n'
这将删除分号。我确信有一种方法可以在不删除它们的情况下做到这一点,但这是我头脑中唯一知道的方法; HTH
我没有 outlook,无法测试我的假设,但 outlook 可能要求文本使用 \r\n
行结尾而不是 \n
行结尾。
尝试
sed $'s/$/\r/' <<< "$d" | mail ...
或安装dos2unix并使用
unix2dos <<< "$d" | mail ...
将 linux \n
行结尾转换为 windows \r\n
行结尾。
Outlook 似乎从我的邮件中删除了多余的换行符。我能够使用 awk 来解决这个问题。
echo "$d" | awk '{ print [=10=]" " }' | mail -s "subject" -r "Name<Name@somewhere.com >" first.last@somewhere.com
这会读取每一行,并在末尾重新打印三个空格。展望现在很高兴。
https://blog.dhampir.no/content/outlook-removes-extra-line-breaks-from-plain-text-emails-how-to-stop-it
echo $d 产生下面的输出,在每个';'之后用换行分隔
REVOKE ALL ON URI 'hdfs://nameservice/data/ed_bos_reporting_stg' FROM ROLE ed_bos_reporting;
REVOKE ALL ON URI 'hdfs://nameservice/data/fq' FROM ROLE ed_edw_telephony_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/fq' FROM ROLE edw_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/standard_register_mail_piece' FROM ROLE standard_register_mail_piece_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/tenant/ed_edw/LSFE_CDC/target_files' FROM ROLE edw_rw;
REVOKE ALL ON URI 'hdfs://nameservice/data/tenant/ed_standard_register_mail_piece_stg' FROM ROLE ed_standard_register_mail_piece_rw;
当我在邮件命令中输入 $d -
echo "$d" | mail -s "subject" -r "Name<Name@somewhere.com >" first.last@somewhere.com
结果没有换行分隔。
我试过:
echo -e "$d\n" | mail -s "subject" -r "Name<Name@somewhere.com >"
echo -e "$d" $'\n' | mail -s "subject" -r "Name<Name@somewhere.com >"
还有其他一些运气不好的人。任何 suggestions/leads 文档将不胜感激。
更新 这在 gmail 中工作正常。但是不在 Outlook 中
如果您希望在某个字符上用换行符分隔输出,tr
非常适合:
echo "$d" | \
mail -s "subject" -r "Name<Name@somewhere.com >" first.last@somewhere.com | \
tr ';' $'\n'
这将删除分号。我确信有一种方法可以在不删除它们的情况下做到这一点,但这是我头脑中唯一知道的方法; HTH
我没有 outlook,无法测试我的假设,但 outlook 可能要求文本使用 \r\n
行结尾而不是 \n
行结尾。
尝试
sed $'s/$/\r/' <<< "$d" | mail ...
或安装dos2unix并使用
unix2dos <<< "$d" | mail ...
将 linux \n
行结尾转换为 windows \r\n
行结尾。
Outlook 似乎从我的邮件中删除了多余的换行符。我能够使用 awk 来解决这个问题。
echo "$d" | awk '{ print [=10=]" " }' | mail -s "subject" -r "Name<Name@somewhere.com >" first.last@somewhere.com
这会读取每一行,并在末尾重新打印三个空格。展望现在很高兴。 https://blog.dhampir.no/content/outlook-removes-extra-line-breaks-from-plain-text-emails-how-to-stop-it