Захватить вывод git в переменную

Для этого вам необходимо настроить initdefault на уровень запуска 3. Вы можете сделать это следующим образом:

cp /etc/inittab /etc/inittab.bak #good idea to make a backup of /etc/inittab  
sed -i 's/id:5:initdefault:/id:3:initdefault:/' /etc/inittab
1
30.04.2019, 07:24
2 ответа

Значением по умолчанию конфигурации git color.uiявляется auto, которое использует цвета только при выводе на TTY. Вы можете изменить это в своей конфигурации на always, чтобы вывод был окрашен независимо.

Наиболее полезным для вашего варианта использования является опция -cдля git, которая позволяет переопределить значение конфигурации только для текущей команды. Вы можете использовать это, чтобы установить color.uiна always:

.
var=$(git -c color.ui=always status)
printf '%s\n' "$var"

Обратите внимание, что во втором примере

var=$(echo "Text in \n\e[34mBlue")
echo -e $var

на самом деле это строка echo -e, которая вызывает появление цветов -управляющие коды не были интерпретированы echoвнутри подстановки команды, а обратная косая черта и другие символы были буквально там. Дело не в том, что цветовые коды были сохранены в то время и забыты, когда они пришли из git-, они были созданы в конце в одном случае и никогда в другом.

2
27.01.2020, 23:30

Попробуйте это:

var=$(git status)
echo "$var"

Речь идет о механизме цитирования bash, без ""цитирования вокруг $var, newlineвнутри рассматривается как разделитель токенов так же, как blank space. Дополнительную информацию см. в руководстве bash

0
27.01.2020, 23:30

Теги

Похожие вопросы