Команда 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-символ.