Если вы хотите напечатать символ новой строки, вам нужно сделать:
echo "$(does_not_print_new_lines)"
т.е. с кавычками.
Это не имеет ничего общего с вызовом из функции и всем делать с кавычками.
Объяснение:
Без кавычек ваша команда echo в основном преобразуется в:
echo here\
here2
т.е. оболочка видит одну команду echo
, с 2 аргумента, here
и here2
, разделенные пробелами - в данном случае символ новой строки.
Так что он просто вызывает
echo 'here' 'here2'
Именно поэтому вы не видите символ новой строки .
Но с кавычками команда преобразуется в
echo "here\
here2"
, т.е. оболочка видит одну команду echo
с 1 аргументом:
here
here2
Итак он вызывает
echo 'here
here2'
И вы получаете новую строку.
FWIW, вам, вероятно, следует просто отбросить echo
и использовать вместо нее
does_not_print_new_lines
.