$ (tail) na remoção da variável \ n

1

Eu estou fazendo o seguinte:

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

O script Perl:

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

Quando eu recebo o email, o arquivo de log não possui \n dentro da tag <pre> . O Hello to the world of tomorrow funciona bem e o \n é representado.

Como obtenho tail para não remover \n , ou é algo mais abaixo na cadeia?

    
por whoami 26.09.2012 / 16:46

2 respostas

5

aspas duplas estão faltando no comando echo:

echo -e "$x" | ./perlscript 
    
por 26.09.2012 / 17:01
5

Esta é uma maneira muito mais clara e idiomática de fazer o que você está tentando fazer:

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

Não há motivo para que você primeiro armazene toda a saída em uma variável quando você for simplesmente empurrá-la para dentro do tubo.

    
por 26.09.2012 / 17:22

Tags