2015-09-25 48 views
3

我使用以下bash腳本發送電子郵件在bash腳本發送郵件輸出文字 n,而不是一個新行

#!/bin/bash 

recipients="[email protected], [email protected]" 
subject="Just a Test" 
from="[email protected]" 

message_txt="This is just a test.\n Goodbye!" 

/usr/sbin/sendmail "$recipients" << EOF 
subject:$subject 
from:$from 
$message_txt 
EOF 

但是,當電子郵件到達$ message_txt內容逐字印像這樣:

This is just a test.\n Goodbye! 

而是解釋這樣的新線:

This is just a test. 
Goodbye! 

我已經牛逼使用:

echo $message_txt 
echo -e $message_txt 
printf $message_txt 

但結果總是相同的。我哪裏錯了?

我在做什麼錯?

+0

使用'message_txt = $' – user3159253

+1

你也應該從身體分離消息頭蒙山一個空行 – user3159253

+0

謝謝,這個工作;) – Grant

回答

3

在bash,你應該使用下面的語法

message_txt=$'This is just a test.\n Goodbye!'

$前面是一個新的語法,允許插入轉義序列在字符串中的單引號。

檢查以下documentation有關bash的ANSI C類轉義序列

+0

謝謝男人,這工作得很好。 – Grant

1

您還可以嵌入換行符直接在字符串中的報價機制,沒有一個轉義序列。 (「!這僅僅是一個測試\ nGoodbye」回聲-e)

message_txt="This is just a test. 
Goodbye!" 
+0

你知道我甚至沒有想過嘗試! – Grant

相關問題