Почему bash удаляет \ n в $ (файл cat)?

18

Если у меня есть файл input.txt , содержащий:

hello
world
!

Затем выполнение команды bash echo $(cat input.txt) выведет это:

hello world !

Почему и как я могу исправить его для вывода именно того, что находится в файле, как оно находится в файле?

    
задан f.ardelian 14.04.2012 в 03:58
источник

2 ответа

22

Если вы используете

echo "$(cat input.txt)"

он будет работать правильно.

Вероятно, вход эха разделяется символами новой строки, и он будет обрабатывать его как отдельные команды, поэтому результат будет без строк новой строки.

    
ответ дан arian 14.04.2012 в 04:10
источник
0

Цитата из справочной страницы bash, раздел Command Substitution :

  

Встроенные строки новой строки не удаляются, но они могут быть удалены во время   расщепление слов.

Немного дальше, тот же раздел:

  

Если подстановка появляется в двойных кавычках, разбиение слов и   расширение имени пути не выполняется          результаты.

Вот почему echo "$(cat /etc/passwd)" работает

    
ответ дан Sergiy Kolodyazhnyy 06.04.2016 в 18:16