echo 错误解释颜色

echo 错误解释颜色

我希望我的终端提示符根据上一个命令的成功而改变颜色。目前我通过以下脚本实现了这一点:

exitstatus()
{
    if [[ $? == 0 ]]; then
        echo -e "\e[38;5;45mबरें"
    else
        echo -e "\e[38;5;211mचूक"
    fi
}
PS1="\[\e[38;5;252m\][\[\e[38;5;214m\]\A \$(exitstatus)\[\e[38;5;252m\]]> \[\e[0m\]"

这里的问题是 exitstatus 内的 echo 无法正确转义颜色,留下一些不可见的字符。当我输入长命令时,这会导致我的终端剪短行并将新行写在前一行的上面。 在此输入图像描述

\[\]使用 PS1 变量,我通过添加around解决了这个问题\e[...m。然而,Echo 没有方括号作为转义字符,我找不到一种方法让它正确转义颜色。

相关内容