我编写了这个用作登录横幅的脚本。我的原始剧本,就像你在这里看到的那样,只是文字颜色。我重新编写了脚本以添加粗体文本和背景颜色。既然这样做,我无法让它发挥作用。我的语法有问题,因为脚本将$ 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;
答案 0 :(得分:1)
设置BOLD="\e[1"
,不设m
。
使用原始代码,其输出方式与\e[1m;107;31m
类似,但应为\e[1;107;31m