2016-09-21 66 views
1

我正在嘗試編寫一個perl腳本,該腳本通過電子郵件發送我在第一個參數中給出的所有內容,但我需要電子郵件正文才能有多行。當我將文本傳遞給腳本時(使用MIME :: Lite,fyi),電子郵件正文只有一行,因爲我在腳本中傳遞的「\ n」似乎沒有在電子郵件正文中轉換爲換行符。包含換行符的Perl參數

下面是一個例子

腳本簡要內容:

my $message = $ARGV[0]; 
    #blah blah 
    sendEmail $message; 

命令示例調用腳本的時候

sendEmail.pl "Issue: CPU usage is high \n Time: 11:20AM \n" 

我需要什麼:

Issue: CPU issue 
Time: 12:00AM 

我得到:

Issue: CPU issue \n Time: 12:00AM \n 

即使我只是想打印到輸出字符串作爲print "$message",我得到的結果相同。

如何強制perl考慮傳遞給它的\ n字符,以便它在看到該字符時將內容移動到下一行?

+0

這實際上是一個_new line_。 _carriage return_是一個'\ r'。 :) – simbabque

回答

5

這看起來不像perl的問題,這是您鍵入的bash命令的問題。當您在bash輸入以下字符串字面:

"Issue: CPU usage is high \n Time: 11:20AM \n" 

bash不解釋\n字符序列換行符。你需要一個不同的語法。您可以使用下列內容:

# bash 
sendEmail.pl $'Issue: CPU usage is high\nTime: 11:20AM\n' 

# bash or sh 
sendEmail.pl 'Issue: CPU usage is high 
Time: 11:20AM 
' 
+0

你說得對。謝謝你 – JohnnyLoo

+2

我會稱之爲「你如何使用bash的問題」,而不是「bash的問題」。 Bash的行爲正如指定和記錄。 –

+0

@CharlesDuffy好點。 – redneb