包含换行符的Perl参数

时间:2016-09-21 17:21:36

标签: perl shell arguments

我正在尝试编写一个perl脚本,通过电子邮件发送我在第一个参数中提供的任何内容,但我需要电子邮件正文有多行。当我将文本传递给脚本时(使用MIME :: Lite,fyi),电子邮件正文只有一行,因为我在脚本中传递的“\ n”似乎没有在电子邮件正文中转换为换行符。 / p>

这是一个例子

脚本简介内容:

    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传递给它的字符,以便在看到该字符时将内容移动到下一行?

1 个答案:

答案 0 :(得分:6)

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
'