Команда sh read ест косую черту во входе?
Возможно, проще всего объяснить с помощью примера:
$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
Кажется, что команда "читать" интерпретирует косые черты во входном файле как escape-последовательности и удаляет их. Мне нужно обработать файл строки за строкой, не меняя его содержимого, и я не уверен, как остановить чтение от умных здесь. Любые идеи?
Ответы
Ответ 1
Подтверждение: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html:
-r
Если эта опция задана, обратная косая черта не действует как escape-символ. Обратная косая черта считается частью линии. В частности, пара обратной косой черты не может использоваться как продолжение линии.
Он работает на моей машине.
$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
Ответ 2
Используйте read -r
, согласно http://www.ss64.com/bash/read.html:
-r
Если эта опция задана, обратная косая черта не действует как escape-символ.