Cha*_*lie 4 bash sendmail echo
为什么以下内容不会在生成的电子邮件中保留新行字符?
#!/bin/bash
file="/tmp/ip.txt"
address=$(curl -s http://ipecho.net/plain; echo)
ifconfig=$(ifconfig)
function build_body
{
echo "----------------------------------------------------------------" > $file
echo "IP Address: $address (according to http://ipecho.net/plain)" >> $file
echo "----------------------------------------------------------------" >> $file
echo >> $file
echo "Result from ifconfig:" >> $file
echo >> $file
echo "$ifconfig" >> $file
echo >> $file
}
build_body
msg=$(cat $file)
mail="subject:Home Server Status\nfrom:email@example.com\n$msg"
echo $mail | /usr/sbin/sendmail "email2@example.com"
Run Code Online (Sandbox Code Playgroud)
我收到这个脚本生成的电子邮件,然而,整个身体都在一条线上!/tmp/ip.txt正是我希望电子邮件的外观.
小智 9
我最近碰到了这个.我能够解决它为echo添加'-e'选项.
改变这个:
echo $ mail |/usr/sbin/sendmail"email2@example.com"
对此:
echo -e"$ mail"|/usr/sbin/sendmail"email2@example.com"
希望这会有所帮助.
您可以使用“此处文档”( <<END),使函数将其结果输出到标准输出。
#!/bin/bash
address=$(curl -s http://ipecho.net/plain; echo)
function build_body
{
cat <<END
----------------------------------------------------------------
IP Address: $address (according to http://ipecho.net/plain)
----------------------------------------------------------------
Result from ifconfig:
END
ifconfig
echo
}
( cat <<END; build_body) | /usr/sbin/sendmail -i -- "email2@example.com"
Subject:Home Server Status
From:email@example.com
END
Run Code Online (Sandbox Code Playgroud)