приглашение bash и отображение цветов внутри функции

У меня есть это в моем .bashrc:

LIGHTGREEN="\[\033[1;32m\]"
LIGHTRED="\[\033[1;31m\]"
WHITE="\[\033[0;37m\]"
RESET="\[\033[0;00m\]"

function error_test {
    if [[ $? = "0" ]]; then
        echo -e "$LIGHTGREEN"
    else
        echo -e "$LIGHTRED"
    fi
}

PS1="\u\$(error_test)@\w$RESET \$ "

Похоже, это делает вывод оболочки точно:

имя пользователя \ [\] @ ~ /

Экранирование [и ] вокруг цветовых кодов отображаются в моем приглашении. Если я удалю escape-коды вокруг цветов, он работает, но затем перенос строки bash не сработает.

Обратите внимание, если сделать PS1 = "СВЕТЛО-ЗЕЛЁНЫЙ - что угодно - $ СБРОС " он работает, а [и] не экранируются. Однако я хочу сделать это внутри функции, что, кажется, является проблемой.

Я не могу найти никакой хорошей документации по этому поводу. man echo даже не перечисляет параметр -e. Похоже, что в Bash много недокументированных, ручных знаний.

46
задан Andy Ray 6 July 2011 в 06:12
поделиться