Команда sh read ест косые черты на входе?

Возможно, проще всего это объяснить на примере:

$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|

Кажется, что команда "read" интерпретирует косые черты во входных данных как escape-символы и удаляет их. Мне нужно построчно обрабатывать файл, не меняя его содержимого, и я не уверен, как остановить умное чтение. Есть идеи?

2 ответа

Решение

Согласно: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html:


Если указан этот параметр, обратный слеш не действует как escape-символ. Обратная косая черта считается частью линии. В частности, пара с обратной косой чертой-новой строкой не может использоваться в качестве продолжения строки.

Это работает на моей машине.

$ echo '\&|' | while read -r in; do echo "$in"; done
\&|

Использование read -rв соответствии с http://www.ss64.com/bash/read.html:


Если указан этот параметр, обратный слеш не действует как escape-символ.

Другие вопросы по тегам