如何在 bash 中正确回显彩色文本?

如何在 bash 中正确回显彩色文本?

我遇到了以下问题:

在 bash 上我设置:

COLOR="0;31" #red color

如果我做

echo -e "\e[00;31mRED\e[00m" 

我明白了

RED<- 终端上显示为红色

但是如果我这样做

echo -e "\e[0$COLORm \RED\e[00m"

我刚刚得到

RED<- 没有颜色

如何使用颜色和$COLOR变量进行打印?

答案1

bash 对变量一无所知COLORm。但以下示例将起作用

COLOR="0;31m"
echo -e "\e[0$COLOR \RED\e[0m"

答案2

使用${var}– 例如\e[0;${COLOR}m– 将变量名称与周围文本分开。

或者,使用printf "\e[0;%sm %s \e[m\n" "$COLOR" "RED"

(旁注:\e[00;31m没有必要;\e[0;31m或者只要\e[;31m是就可以。同样适用于\e[00m

答案3

使用花括号隔离变量名,并消除变量名与某些文字字符相邻(例如 ${hello}world)或其他棘手位置的表达式中的歧义:

在此处输入图片描述

相关内容