J'ai quelques serveurs sur mon développementmachine. J'ai un script pour les exécuter et je travaille sur quelques branches git à la fois. Donc, chaque fois que j'exécute le script qui exécute le serveur, je veux qu'il imprime quel serveur à partir de quelle branche de git j'essaie d'exécuter dans une couleur différente.
Voici ce que j'ai mais cela ne fonctionne pas correctement.
git_branch= git branch|grep "*"|cut -c3-
echo -e "e[1;33;40m Running API server on git branch $git_branch e[0m"
...
REST_OF_THE_CODE_THAT_RUNS_THE_DEV_SERVER
...
Il imprime d'abord la branche git et la valeur ne semble pas du tout être affectée à la variable. Je n'arrive pas à comprendre où je vais mal
Réponses:
5 pour la réponse № 1Pour affecter le résultat d'une ligne de commande à une variable, utilisez des guillemets ou $(..)
notation. Par exemple, en supposant que votre ligne de commande fonctionne, vous pouvez utiliser:
git_branch=$(git branch|grep "*"|cut -c3-)
Cette notation est préférable aux guillemets car elle est plus lisible et permet d'imbriquer sans avoir besoin de s'échapper:
echo $(echo foo$(echo bar))
Notez que dans votre code d'origine, votre grep
devrait être plus précis. Rappelez-vous qu'un astérisque signifie vraiment "zéro ou plus de l'atome précédent", pour grep. Ce serait donc mieux:
git_branch=$(git branch|grep "^[*]"|cut -c3-)