/ / Comment attribuer la valeur de grep à une variable et concaténer avec une chaîne? - bash, shell, grep

Comment attribuer la valeur de grep à une variable et concaténer une chaîne? - bash, shell, grep

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 № 1

Pour 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-)