Если использовать без кавычек, то любые последовательности пробельных символов (в т.ч. переводов строк) превращаются в одиночные пробелы. И, ЕМНИП, это не прихоть баша - этого требует Posix.
p.s. echo здесь, кстати, абсолютно ни при чём. ни /bin/echo, ни встроенный в bash.
замену непечатаемых символов на пробелы осуществляет сам bash во время парсинга команды. боюсь, никакими стандартами эта процедура не затронута. и замена подобная выглядит более чем логичной.
не хочется замены — заключайте строку с непечатаемыми символами в кавычки.
Да, ты прав. Я просто взял за правило заключать в кавычки _всё_, где есть пробелы. Чтобы не путаться. Поэтому и сказал, что заключить в кавычки нужно и присваивание. Запутался )))
p.s. echo здесь, кстати, абсолютно ни при чём. ни /bin/echo, ни встроенный в bash.
замену непечатаемых символов на пробелы осуществляет сам bash во время парсинга команды. боюсь, никакими стандартами эта процедура не затронута. и замена подобная выглядит более чем логичной.
не хочется замены — заключайте строку с непечатаемыми символами в кавычки.
А это действительно следует из стандартов. echo выводит все переданные ему параметры, разделяя их одним пробелом. А при подстановке разделителями параметров служат любые пробельные символы. И то, и другое - по стандарту. Вот и всё. А заключение в кавычки просто отменяет разбиение на параметры.
Это я просто тогда ответил исходя из практики, не вдумавшись в теорию.
В zsh как раз ненормально: там за это специальная настройка отвечает. А в bash достаточно поставить или не поставить кавычки; т.е. расставив кавычки правильным образом, Вы всегда будете уверены в единообразной работе скрипта -- вне зависимости от умолчаний оболочки на конкретной машине.