如何强制 echo 的输出颜色遵循 bash 脚本中定义的颜色?

How to force the output color of echo to follow colors defined in bash script?

我在 bash 脚本中使用 ANSI 转义码来更改回显命令的颜色

#/bin/bash

cecho() {
        local code="3["
        case "" in
                black  | bk) color="${code}0;30m";;
                red    |  r) color="${code}1;31m";;
                green  |  g) color="${code}1;32m";;
                yellow |  y) color="${code}1;33m";;
                blue   |  b) color="${code}1;34m";;
                purple |  p) color="${code}1;35m";;
                cyan   |  c) color="${code}1;36m";;
                gray   | gr) color="${code}0;37m";;
                *) local text=""
        esac
        [ -z "$text" ] && local text="$color${code}0m"
        echo -e "$text"
}

cecho b "This is blue"
cecho r "This is red"

问题是我使用的是终端配色方案,它会导致 cecho 命令显示错误的颜色,例如。如果我尝试输出紫色的 cecho 命令,它会显示为黄色。我认为我的内部终端颜色方案与这些 ANSI 颜色代码冲突。是否可以以某种方式覆盖任何内部配色方案并强制显示 bash 脚本中定义的颜色?回声显示错误的颜色也可能是由于其他原因造成的,与内部配色方案冲突只是我的猜测。

在我的配色方案中,在使用 ANSI 颜色代码时,有一些为不同 colors.So 预定义的变量,它被这些全局定义的颜色覆盖。删除所有那些内部定义的颜色显然已经解决了这个问题