Como imprimir um novo caractere de linha com o eco?

14

Eu despejo uma string com hexdump como este 2031 3334 2e30 0a32 2032 3331 302e 000a . É claro que 0x0a é um caractere de nova linha, no entanto, quando eu tento ecoar essa string, sempre tenho 1 430.2 2 13.0 - a nova linha é substituída por um espaço, até eu uso o -e flag. / p>

Qual pode ser o problema? O rejeito 0x0a estraga a saída? Existe alguma alternativa para imprimir %code% uma nova linha?

Obrigado e cumprimentos.

    
por Summer_More_More_Tea 02.07.2012 / 15:27

3 respostas

23

O novo caractere de linha com o comando echo é "\ n". Tomando o seguinte exemplo:

echo -e "This is line 1\nThis is line 2"

resultaria na saída

This is line 1
This is line 2

O parâmetro "-e" é importante aqui.

    
por 02.07.2012 / 15:33
4

POSIX 7 diz que você não pode

link

-e não está definido e as barras invertidas são definidas pela implementação:

If the first operand is -n, or if any of the operands contain a <backslash> character, the results are implementation-defined.

a menos que você tenha uma extensão XSI opcional.

Portanto, use printf em vez disso:

format operand shall be used as the format string described in XBD File Format Notation [...]

a Notação de formato de arquivo :

\n <newline> Move the printing position to the start of the next line.

Lembre-se também que o Ubuntu 15.10 e a maioria das distribuições implementam echo como:

  • um Bash incorporado: help echo
  • um executável autônomo: which echo

que pode levar a alguma confusão.

    
por 24.01.2016 / 00:11
2

Eu finalmente formatei corretamente essa string com printf "$string" . Obrigado a todos.

    
por 03.07.2012 / 04:02