sh leer come comando barras inclinadas en la entrada?
Pregunta
Tal vez más fácil de explicar con un ejemplo:
$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
Parece que el "leer" comando está interpretando las barras en la entrada como se escapa y es la eliminación de ellos. Necesito procesar un archivo línea por línea, sin cambiar su contenido, y no estoy seguro de cómo dejar de leer de ser inteligente aquí. ¿Alguna idea?
Solución
accrding a: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01 .html :
r
Si se da esta opción, la barra invertida no actúa como un carácter de escape. La barra invertida se considera parte de la línea. En particular, una backslash-salto de línea par no se puede utilizar como una continuación de línea.
Funciona en mi máquina.
$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
Otros consejos
Uso read -r
, según http://www.ss64.com/bash/read.html :
r
Si se da esta opción, la barra invertida no actúa como un carácter de escape.