Да или нет, в зависимости от того, что вы подразумеваете под своим вопросом. Труба не может удалить обратный слеш, но, как вы видели, read
может:
cat foo.txt | read bar
Это, однако, бесполезное использование cat
И это не будет делать то, что вам нужно в любом случае.
В Bash у этого есть добавленная «функция», в которой каждая сторона трубы работает в собственном процессе. Это означает, что переменная (bar
) не будет доступна в вызывающем процессе. Таким образом, обратная косая черта будет удалена, но она не принесет вам ничего хорошего.
Да, вы могли изловчиться, чтобы захватить его:
bar=$(cat foo.txt | { read bat;echo $bat;})
Но это не просто страшно смотреть, это неэффективно, а также.
Придерживайтесь перенаправления.
В Mac OS X это '-E' вместо' -r' – max
Это будет работать только для экранированных символов ascii, таких как пробел, обратная косая черта и т. Д. Если это ускользнет от новой строки, табуляции или значения unicode, это не сработает – EkriirkE