一、相关知识
给内容加不同的颜色, 可以结合echo -e的参数,内容的颜色用数字表示,范围为30-37,每个数字代表一种颜色。
30-37代表8种不同的字体颜色,40-47代表对于的背景颜色[man console_codes]
1) 字体颜色代码
echo -e "E[30m 黑色字 oldboy 33[0m"
echo -e "E[31m 红色字 oldboy 33[0m"
echo -e "E[32m 绿色字 oldboy 33[0m"
echo -e "E[33m 棕色字 oldboy 33[0m"
echo -e "E[34m 蓝色字 oldboy 33[0m"
echo -e "E[35m 洋红字 oldboy 33[0m"
echo -e "E[36m 蓝绿字 oldboy 33[0m"
echo -e "E[37m 白色字 oldboy 33[0m"
所以在脚本中,最好先通过定义变量的方式定义颜色前后缀,然后在对于的地方调用颜色前缀和后缀就行了
2) 背景颜色代码
字的背景颜色对应的数字范围为40-47,代码如下。
echo -e " 33[40;37m 黑底白字oldboy 33[0m" #<==40m表示黑色背景。
echo -e " 33[41;37m 红底白字oldboy 33[0m" #<==41m表示红色背景。
echo -e " 33[42;37m 绿底白字oldboy 33[0m" #<==42m表示绿色背景。
echo -e " 33[43;37m 棕底白字oldboy 33[0m" #<==43m表示棕色背景。
echo -e " 33[44;37m 蓝底白字oldboy 33[0m" #<==44m表示蓝色背景。
echo -e " 33[45;37m 洋红底白字oldboy 33[0m" #<==45m表示洋红色背景。
echo -e " 33[46;37m蓝绿底白字oldboy 33[0m" #<==46m表示蓝绿色背景。
echo -e " 33[47;30m 白底黑字oldboy 33[0m" #<==47m表示白色背景。
二、案例: 开发一个给指定内容加质地更颜色的脚本
使用case语句,通过脚本传入指定内容和指定颜色,根据指定颜色输出指定内容
cat /server/scripts/color.sh
#!/bin/sh RED_COLOR='E[1;31m' GREEN_COLOR='E[1;32m' YELLOW_COLOR='E[1;33m' BLUE_COLOR='E[1;34m' RES='E[0m' function usage(){ echo "error,color must bu{red|green|yellow|blue}" exit 1 } #定义帮助函数 function input(){ if [ $# -ne 2 ] then echo "must input two char" exit 2 fi case "$2" in red) echo -e "$RED_COLOR $1 $RES" ;; green) echo -e "$GREEN_COLOR $1 $RES" ;; yellow) echo -e "$YELLOW_COLOR $1 $RES" ;; blue) echo -e "$BLUE_COLOR $1 $RES" ;; *) usage esac } #定义主函数,并判断输入的参数个数 function main(){ input $1 $2 } main $*
- 脚本演示