Eu despejo uma corda hexdump
assim 2031 3334 2e30 0a32 2032 3331 302e 000a
. É claro que 0x0a
é um caractere de nova linha, no entanto, quando tento repetir essa string, sempre obtive 1 430.2 2 13.0
- a nova linha é substituída por um espaço, até eu uso o -e
sinalizador.
Qual pode ser o problema? O rejeito \0
arruina a saída? Existe alguma alternativa para imprimir 0x0a
uma nova linha?
Obrigado e cumprimentos.
echo -e
. Obrigado, encontro uma solução.printf "...\n"
vez deecho
.Respostas:
O novo caractere de linha com o
echo
comando é "\ n". Tomando o seguinte exemplo:Resultaria na saída
O parâmetro "-e" é importante aqui.
fonte
"echo -e ..."
depende do eco do bash para funcionar corretamente (por exemplo,dash
apenas imprimirá o "-e"); mas '/ bin / eco' pode (ou não) também funcionar. Infelizmente (talvez apropriadamente), há muitos ecos por aí, e você realmente não quer se preocupar com o que vai receber. Usar'printf "....\n"
é uma opção mais portátil entre envs e shells.O POSIX 7 diz que você não pode
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
não está definido e as barras invertidas são definidas para implementação:a menos que você tenha uma extensão XSI opcional.
Então use
printf
:a notação de formato de arquivo :
Lembre-se também de que o Ubuntu 15.10 e a maioria das distribuições implementam
echo
ambos como:help echo
which echo
o que pode levar a alguma confusão.
fonte
Finalmente, formate corretamente essa string com
printf "$string"
. Obrigado a todos.fonte
$string
que você fala? Como isso está conectado à pergunta? O que não envolve,\n
como nas outras duas respostas?