Bash Функция Проблемы с цветами и printf - PullRequest
0 голосов
/ 05 декабря 2018

У меня странные проблемы с отображением цветов в 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) -релиз.

Заранее спасибо.

...