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 -uq
directement. La sortie standard sera également sortie de l'appel de fonction.
Si vous avez vraiment besoin d'utiliser des variables et echo
les, vous devez citer l'argument passé à echo
si vous voulez les espaces blancs à conserver: echo "$status"
.
La raison en est qu'il $status
contiendra littéralement les éléments suivants:
M * 764 update
Status against revision: 771
Quand vous courez echo $status
, echo
s'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
). echo
imprimera 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, echo
il 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 -uq
au lieu deecho
la sortie de$(svn status -uq)
?