Предположим, у меня есть следующий файл:Читать весь файл в переменную, сохраняя экранированные символы нетронутыми
hello\nworld
То есть строка \n
в буквальном смысле присутствует в файле:
$ cat input.txt
hello\nworld
Я хочу прочитайте этот файл точно так же, как в переменной в оболочке. Тем не менее, все общие подходы для чтения данных из файла, как и те, которые описаны here, делают оболочку интерпретировать \n
последовательность как символ новой строки:
% test="$(<input.txt)"
% echo "$test"
hello
world
% test="$(cat input.txt)"
% echo "$test"
hello
world
Это было совершенно неожиданно для меня, и, честно говоря, я не совсем понимаю, что Я не могу найти ответ на эту проблему в Интернете; Я ожидал, что кто-то уже справился с этой проблемой.
Я также видел, что если вы используете read -r
при чтении файла по строкам, он работает, но я не хочу читать его по строкам, я хочу прочитать весь файл. Конкретно, я хочу, чтобы переменная test
содержала строку «hello \ nworld» буквально. Как мне это сделать?
Возможно ли ваше 'эхо' с псевдонимом' echo -e'? – gudok
@gudok нет, нет. –
Что говорят 'type echo' и' which echo'? – Leon