/ / Jak przypisać wartość grep do zmiennej i połączyć ją z łańcuchem? - bash, shell, grep

Jak przypisać wartość grep do zmiennej i połączyć ją z łańcuchem? - bash, shell, grep

Mam kilka serwerów w moim rozwojumaszyna. Każdy z nich ma skrypt do ich uruchomienia i pracuję nad kilkoma gałęziami jednocześnie. Więc kiedy używam skryptu, który uruchamia serwer, chcę, aby wydrukował serwer, z którego oddziału git próbuję uruchomić w innym kolorze.

Oto, co mam, ale nie działa prawidłowo.

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
...

Drukuje najpierw gałąź git, a wartość nie wydaje się być w ogóle przypisana do zmiennej. Nie jestem w stanie dowiedzieć się, gdzie się mylę

Odpowiedzi:

5 dla odpowiedzi № 1

Aby przypisać wynik linii poleceń do zmiennej, użyj cytatów lub $(..) notacja. Na przykład, zakładając, że działa twój wiersz poleceń, możesz użyć:

git_branch=$(git branch|grep "*"|cut -c3-)

Ta notacja jest lepsza niż notowania zwrotne, ponieważ jest łatwiejsza do odczytania i umożliwia zagnieżdżanie bez potrzeby ucieczki z rzeczy:

echo $(echo foo$(echo bar))

Pamiętaj, że w oryginalnym kodzie, twój grep powinien być bardziej szczegółowy. Pamiętaj, że gwiazdka naprawdę oznacza „zero lub więcej poprzedniego atomu”, na grep. Więc byłoby lepiej:

git_branch=$(git branch|grep "^[*]"|cut -c3-)