Команды оболочки имеют большой синтаксис: a | b | c
не означает «выполнить команду a | b | c
», а скорее «выполнить команду a
, с кучей клея, который делает ее конвейерным выводом; выполните команду b
, с кучей клея, который заставляет его читать ранее переданный по конвейеру вывод в качестве входных данных, и направляет его вывод, и запускает команду c
, с кучей клея, который заставляет его читать b
переданный по конвейеру вывод ».
Вы можете продублировать весь этот клей в своем коде, но git branch | grep \* | cut -d ' ' -f2
это неправильный способ сделать это в первую очередь. Вместо этого используйте одну из этих двух команд:
git symbolic-ref --short HEAD
git rev-parse --abbrev-ref HEAD
Разница между этими двумя командами заключается в том, что первая завершается с ошибкой (с сообщением об ошибке) , если нет текущей ветви . Второй печатает HEAD
для этого случая. Этот случай происходит, когда HEAD
«отсоединен», то есть репозиторий не имеет текущей ветви .
Последовательность git branch | grep \* | cut ...
завершается успешно, но печатает (HEAD
для этого случая с отделенной ГОЛОВКОЙ, а (HEAD
бесполезен.