121 votes

Comment obtenir le nom de la branche git actuelle dans une variable d'un shell script ?

Je suis novice en matière de scripts shell et je n'arrive pas à comprendre ce qui se passe. Si vous n'êtes pas familier, la commande git branch retourne quelque chose comme

* develop
  master

où l'astérisque indique la branche actuellement extraite. Lorsque j'exécute la commande suivante dans le terminal :

git branch | grep "*"

Je reçois :

* develop

comme prévu.

Cependant, lorsque j'exécute

test=$(git branch | grep "*")

ou

test=`git branch | grep "*"`

Et puis

echo $test

le résultat n'est qu'une liste de fichiers dans le répertoire. Comment définir la valeur de test="* develop" ?

L'étape suivante (une fois que nous avons obtenu "* develop" dans une variable appelée test) consiste à obtenir la sous-chaîne. Est-ce que ce serait simplement ce qui suit ?

currentBranch=${test:2} 

J'ai joué avec cette fonction substring et j'ai eu beaucoup d'erreurs de "mauvaise substitution" et je ne sais pas pourquoi.

1voto

Dyno Hongjun Fu Points 2397

Désactiver l'expansion des globes de subshell,

test=$(set -f; git branch)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X