Любой пробел в оболочке обычно считается разделителем аргументов. Таким образом, ваш первый пример имеет два аргумента. echo
печатает аргументы, разделенные одним пробелом, и это поведение, которое вы видите во втором примере.
Однако, когда вы используете кавычки, все, что находится между ними, является одним аргументом, и оно печатается буквально. Один аргумент в вашем первом примере уже содержит символ новой строки, поэтому он печатается с символом новой строки.
Опция -e
из встроенной функции bash
echo
регулирует расширение escape-последовательностей, таких как \n
; однако у вас нет никаких escape-последовательностей. Переменная содержит буквенный перевод строки.