У меня странные проблемы с отображением цветов в Bash из функции, которую я написал.Если бы это было согласованно, это было бы одно, но я недавно создал 10 идентичных экземпляров RedHat (7.4), и у 1 из 10 возникла проблема - остальные 9 работают нормально.
Так что яесть функция, которая позволяет мне печатать цветовые сообщения о состоянии (упрощенно для краткости):
printStatus () {
local COLOUR_BLUE="\e[0;34m"
local COLOUR_GREEN="\e[0;32m"
local COLOUR_NORMAL="\e[0;0m"
local COLOUR_RED="\e[0;31m"
local COLOUR_YELLOW="\e[0;33m"
case ${1} in
"EMPTY")
printf "[ ]"
;;
"FAIL")
printf "[ ${COLOUR_RED}FAIL${COLOUR_NORMAL} ]"
;;
"INFO")
printf "[ ${COLOUR_BLUE}INFO${COLOUR_NORMAL} ]"
;;
"NOTE")
printf "[ NOTE ]"
;;
"OK")
printf "[ ${COLOUR_GREEN}OK${COLOUR_NORMAL} ]"
;;
"WARN")
printf "[ ${COLOUR_YELLOW}WARN${COLOUR_NORMAL} ]"
;;
*)
printf "${1}"
;;
esac
}
Поэтому, когда я вызываю это так в сценарии:
printStatus FAIL
, оно всегда работает какожидается (FAIL будет красным):
[ FAIL ]
Если я назову это так:
printf "%s : This is not going to work\n" $( printStatus FAIL )
, это сработает на 90% + моих сборок.Когда это не работает, все, что я получаю (без цвета):
1
Что кричит (мне), что это код возврата каким-то образом, но почему?Если бы это было так в 100% случаев, это имело бы смысл, но это не так.И действительно странная часть в том, что это только для красного - если я изменил условие FAIL выше, чтобы использовать любой другой цвет, он отлично работает с новым цветом.Я не могу на всю жизнь увидеть, что отличается от тех сборок, которые не работают.Использование «set -x» в моем сценарии показывает, что все будет так, как я ожидал.
Если это что-то значит, моя версия Bash: GNU bash, версия 4.2.46 (2) -релиз.
Заранее спасибо.