Se você quiser que uma função mostre apenas a saída de um comando, não há necessidade de capturar a saída e, em seguida, echo
novamente.
Basta executar svn status -uq
diretamente. O stdout também será enviado da chamada de função.
Se você realmente precisa usar variáveis e echo
, você precisa citar o argumento passado para echo
se quiser que o espaço em branco seja preservado: echo "$status"
.
A razão é que $status
conterá literalmente o seguinte:
M * 764 update
Status against revision: 771
Quando você executar echo $status
, echo
será chamado assim:
echo M * 764 update \
Status against revision: 771
Este é mais do que um parâmetro, uma vez que o Bash divide os argumentos no espaço em branco ( ver $IFS
) . echo
imprimirá cada argumento, separado por um espaço, portanto, enquanto o restante da linha estiver bem, a nova linha será - em essência - colapsada em um espaço.
Se você cercar o argumento com uma citação, echo
somente o verá como um argumento e o imprimirá corretamente novamente.
O Wiki do Bash tem uma boa leitura sobre citações e lista algumas razões pelas quais você deve sempre cite suas variáveis além de algumas exceções.