Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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-символ.