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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top