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.
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
estraga a saída? Existe alguma alternativa para imprimir %code% uma nova linha? 0x0a
Obrigado e cumprimentos.
POSIX 7 diz que você não pode
-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:
help echo
which echo
que pode levar a alguma confusão.
Eu finalmente formatei corretamente essa string com printf "$string"
. Obrigado a todos.
Tags bash echo shell shell-script newlines