Странный результат инициализации переменной с выводом «git describe»

Странный результат инициализации переменной с выводом «git describe»

По какой-то причине это назначение OUT=$(git describe HEAD)выводит на стандартный вывод (например):fatal: No names found, cannot describe anything.

Это нормальное поведение? Почему этого не происходит с другими командами?

решение1

Это на самом деле stderrвывод, а не stdout. При запуске команды из интерактивного терминала оба stdoutи stderrнастроены на отправку в терминал.

Если вы хотите получить stderrвывод в своей переменной (что вам, вероятно, не нужно, но в любом случае), перенаправьте его следующим stdoutобразом:

OUT=$(git describe HEAD 2>&1)

Или, если вы не хотите, чтобы тот, кто запускает ваш скрипт, видел этот stderrвывод, выбросьте его следующим образом:

OUT=$(git describe HEAD 2>/dev/null)

Связанный контент