Есть много ответов на вопрос «как хранить и печатать новые строки в переменной bash». Вкратце, обычно ответ заключается в том, что переменная, содержащая символы новой строки, должна быть заключена в кавычки при ее оценке.
e.g.
foo="1
2"
echo "$foo"
выходы
1
2
а также
echo $foo
выходы
1 2
В этот момент можно подумать, что строки переменной можно соединить в одну строку, присвоив их другой переменной без кавычек.
e.g.
bar=$foo
Однако
echo "$bar"
выходы
1
2
Возможно, ответ на этот вопрос уже был задан. Но обилие ответов на похожие вопросы может вытеснять существующие ответы на интересующий меня вопрос. Итак, необходимо задаться вопросом: почему оценка переменной без кавычек отбрасывает новые строки, в то время как оценка переменной без кавычек в задании сохраняет новые строки?
Ответы без ссылки на документацию не будут действительно полезны, поскольку поведение и так понятно. Языковые юристы, вероятно, дадут лучшие ответы.
echo $foo
не печатает новые строки. Они не указывают, почемуbar=$foo
сохраняет новые строки. Даже если я упустил причину в этих ссылках, было бы полезно получить здесь конкретное и краткое объяснение этого явления. - person Lotney   schedule 09.05.2020echo $foo
иbar=$foo
. Приведенные ссылки не относятся к этому конкретному моменту. На самом деле они, кажется, подразумевают, что новые строки должны быть потеряны в обоих случаях. - person Lotney   schedule 09.05.2020