У меня есть небольшой скрипт, который раскрашивает вывод компилятора (maven), поэтому ошибки больше не будут упускаться из виду.
#!/bin/sh
export TEXT_YELLOW=`tput setaf 3`
export TEXT_RED=`tput setaf 1`
export RESET_FORMATTING=`tput sgr0`
mvn $* | sed \
-e "s/\(\[WARNING\].*\)/${TEXT_YELLOW}\1${RESET_FORMATTING}/g" \
-e "s/\(\[ERROR\].*\)/${TEXT_RED}\1${RESET_FORMATTING}/g"
Проблема в том, что оболочка внутри функции оболочки моего компилятора (mvn cli:execute-phase
).На экране должна появиться командная строка типа maven2>
, и пользователь сможет вводить команды.К сожалению, из-за моего сценария я не вижу ничего, кроме мигающего курсора.Только когда я нажимаю клавишу ввода, всплывает maven2>
текст приглашения-префикса.
Я предполагаю, что sed ждет EOL, прежде чем что-то напечатает на экране.Чтобы это исправить, мне нужно посмотреть, начинается ли поток со строки maven2> .Если это произойдет, распечатайте его непосредственно на терминал, в противном случае отправьте его на sed .Возможно ли это в bash?