Si vous voulez qu'une fonction ne montre que le résultat d'une commande, il n'est pas nécessaire de capturer le résultat, puis echo à nouveau.
Il suffit de courir svn status -uqdirectement. La sortie standard sera également sortie de l'appel de fonction.
Si vous avez vraiment besoin d'utiliser des variables et echoles, vous devez citer l'argument passé à echosi vous voulez les espaces blancs à conserver: echo "$status".
La raison en est qu'il $statuscontiendra littéralement les éléments suivants:
M * 764 update
Status against revision: 771
Quand vous courez echo $status, echos'appellera comme ceci:
echo M * 764 update \
Status against revision: 771
C'est plus d'un paramètre, puisque Bash divise les arguments en espaces ( voir$IFS ). echoimprimera chaque argument, séparé par un espace. Ainsi, alors que le reste de la ligne aura l’air parfait, la nouvelle ligne sera - par essence - réduite à un espace.
Si vous entourez l'argument avec une citation, echoil ne le verra que comme un argument et le restituera correctement.
Le Wiki Bash a une bonne lecture sur les citations et énumère quelques raisons pour lesquelles vous devriez toujours citer vos variables à quelques exceptions près.
svn status -uqau lieu deechola sortie de$(svn status -uq)?