带有颜色语法的Bash Echo脚本

时间:2017-07-20 23:55:44

标签: bash

我编写了这个用作登录横幅的脚本。我的原始剧本,就像你在这里看到的那样,只是文字颜色。我重新编写了脚本以添加粗体文本和背景颜色。既然这样做,我无法让它发挥作用。我的语法有问题,因为脚本将$ BOLD之后的所有内容连接到实际的输出文本。我怀疑它与分号有关但我已经尝试了50种不同的方法而没有成功。我错过了什么?我知道这应该有效,因为我已在终端测试了以下内容:

#Example of multiple formats in one line
echo -e "\e[1;41;36mHello\e[0m"

剧本:

#!/bin/bash

#constants
BOLD="\e[1m";
ENDCOLOR="\e[0m";

#font color selection
Black="30";
DarkGray="30";
Red="31";
LightRed="31";
Green="32";
LightGreen="32";
BrownOrange="33";
Yellow="33";
Blue="34";
LightBlue="34";
Purple="35";
LightPurple="35";
Cyan="36";
LightCyan="36";
LightGray="37";
White="37";

#bg color selection

bgDefault="49";
bgBlack="40";
bgRed="41";
bgGreen="42";
bgYellow="43";
bgBlue="44";
bgMagenta="45";
bgCyan="46";
bgLightGray="47";
bgDarkGray="100";
bgLightRed="101";
bgLightGreen="102";
bgLightYellow="103";
bgLightBlue="104";
bgLightMagenta="105";
bgLightCyan="106";
bgWhite="107";

# prints colored text
prnt () {

    STR=$BOLD";"$3";"$2"m"$1$ENDCOLOR;
    echo -e "$STR";
}

# prnt text textcolor bgcolor
prnt "Current Date: $(date)" $Red $bgWhite;
prnt "User Info: $(who)" $White $bgBlack;
prnt "Server Uptime: $(uptime)" $Blue $bgWhite;

1 个答案:

答案 0 :(得分:1)

设置BOLD="\e[1",不设m

使用原始代码,其输出方式与\e[1m;107;31m类似,但应为\e[1;107;31m