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