$(tail) 到变量中删除 \n

$(tail) 到变量中删除 \n

我正在做以下事情:

x="Hello to the world of tomorrow\n <pre>";
x="${x}$(tail -n 50 log/logfile.log)"
x="${x}</pre>";
echo -e $x | ./perlscript

Perl 脚本:

#!perl
# perlscript
open(MAIL, "sendmail -t")
print MAIL "EMAIL HEADERS\n\n"
print MAIL <STDIN>
close(MAIL);

\n当我收到电子邮件时,日志文件中没有任何<pre>标签。工作Hello to the world of tomorrow正常并且\n有代表性。

我如何才能tail不删除任何\n,或者它是链下游/上游的东西?

答案1

命令 echo 中缺少双引号:

echo -e "$x" | ./perlscript 

答案2

这是一种更干净、更惯用的方式来完成您想要做的事情:

{ printf 'Hello to the world of tomorrow\n <pre>\n'
  tail -n 50 log/logfile.log
  printf '</pre>\n'; } | ./perlscript

无论如何,当您只是将其按顺序推入管道时,没有理由需要先将所有输出缓冲在变量中。

相关内容