Если вы хотите , чтобы функция просто показать вывод команды, нет никакой необходимости , чтобы захватить выход , а затем 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 хорошо читает цитаты и перечисляет несколько причин, почему вы всегда должны заключать в кавычки свои переменные, кроме нескольких исключений.