一、相关知识

给内容加不同的颜色, 可以结合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 黑底白字oldboy33[0m"    #<==40m表示黑色背景。
echo -e "33[41;37m 红底白字oldboy33[0m"    #<==41m表示红色背景。
echo -e "33[42;37m 绿底白字oldboy33[0m"    #<==42m表示绿色背景。
echo -e "33[43;37m 棕底白字oldboy33[0m"    #<==43m表示棕色背景。
echo -e "33[44;37m 蓝底白字oldboy33[0m"    #<==44m表示蓝色背景。
echo -e "33[45;37m 洋红底白字oldboy33[0m"  #<==45m表示洋红色背景。
echo -e "33[46;37m蓝绿底白字oldboy33[0m"   #<==46m表示蓝绿色背景。
echo -e "33[47;30m 白底黑字oldboy33[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 $*

  • 脚本演示
    示例