Если вы хотите , чтобы функция просто показать вывод команды, нет никакой необходимости , чтобы захватить выход , а затем echo его снова.
Просто запустите svn status -uq напрямую. Stdout также будет выводиться из вызова функции.
Если вам действительно нужно использовать переменные и echo их, вам нужно заключить в кавычки аргумент, передаваемый echo если вы хотите сохранить пробелы: echo "$status" .
Причина в том, что $status будет буквально содержать следующее:
M * 764 update
Status against revision: 771
Когда вы запускаете echo $status , echo будет вызываться так:
echo M * 764 update \
Status against revision: 771
Это более одного параметра, поскольку Bash разделяет аргументы на пробелах (см. $IFS). echo напечатает каждый аргумент, разделенный одним пробелом, поэтому, в то время как остальная часть строки выглядит нормально, новая строка, по сути, будет свернута в один пробел.
Если вы окружите аргумент кавычкой, echo увидит его только как один аргумент и правильно выведет его снова.
Bash Wiki хорошо читает цитаты и перечисляет несколько причин, почему вы всегда должны заключать в кавычки свои переменные, кроме нескольких исключений.