sh ler come comando barras na entrada?
Pergunta
Talvez mais fácil de explicar com um exemplo:
$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
Parece que o comando "ler" é interpretar as barras na entrada como escapes e é removê-los. Eu preciso para processar um arquivo linha por linha, sem alterar o seu conteúdo e eu não tenho certeza de como parar de ler de ser inteligente aqui. Alguma idéia?
Solução
accrding para: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01 .html :
-r
Se esta opção for dada, barra invertida não atua como um caractere de escape. A barra invertida é considerada parte da linha. Em particular, uma barra invertida de quebra de linha par não podem ser utilizados como uma continuação de linha.
Ele funciona na minha máquina.
$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
Outras dicas
Use read -r
, como por http://www.ss64.com/bash/read.html :
-r
Se esta opção for dada, barra invertida não atua como um caractere de escape.