shell带颜色的脚本

我们在写shell脚本的时候为了使输出出来的信息更加醒目一点,可以给不同状态的字体显示不同的颜色,如下:

我在这里最先定义了2个函数,log.info和log.err,一个输出正常信息为绿色,一个输出异常信息为红色,随后又定义了2个函数,分别检查mysql和k8s状态,如果检查ok我们就调用info函数,如果检查失败就调用err函数,最后输出结果可以看下图,这样显得更加醒目,更加友好一些。

#!/bin/bash

function log.info()
{ 
  echo "==================================="
  echo -e "e[1;32m $1 e[0m"
  echo "==================================="
}

function log.err()
{
  echo "==================================="
  echo -e "e[1;31m $1 e[0m"
  echo "==================================="
}
function check_mysql()
{
    rpm -qa | grep mysql &> /dev/null
    if [ $? -eq 0 ];then
        log.info "mysql已经安装"
    else
        log.err "mysql没有安装"
    fi
}
function check_k8s()
{
    kubectl get node &> /dev/null
    if [ $? -eq 0 ];then
        log.info "k8s状态正常"
    else
        log.err "k8s状态异常"
    fi
}
check_mysql
check_k8s

如果想让脚本在人性化一点,把时间也打印出来,方便日后查看日志的报错时间,可以按照如下脚本:

#!/bin/bash
function print_log()
{
    log_level=$1
    log_msg=$2
    current_time=`echo $(date +%F%n%T)`
    echo $log_level | grep -i "info" &> /dev/null && echo -e "$current_time e[1;32m [$log_level] e[0m $log_msg"
    echo $log_level | grep -i "error" &> /dev/null && echo -e "$current_time e[1;31m [$log_level] e[0m $log_msg"
    
}


function check_mysql()
{
    rpm -qa | grep mysql &> /dev/null
    if [ $? -eq 0 ];then
        print_log INFO "mysql已经安装"
    else
        print_log ERROR "mysql没有安装"
    fi
}
function check_k8s()
{
    kubectl get node &> /dev/null
    if [ $? -eq 0 ];then
        print_log INFO "k8s状态正常"
    else
        print_log ERROR "k8s状态异常"
    fi
}
check_mysql
check_k8s

最后的执行结果为:

这里只是给大家提供一种写脚本的思路,这个脚本属于热插拔的,真正项目当中可以那过来稍加修改就可以使用

 此外颜色还可以有多种选择,如下:

echo -e "33[30m 黑色字 33[0m"
echo -e "33[31m 红色字 33[0m"
echo -e "33[32m 绿色字 33[0m"
echo -e "33[33m 黄色字 33[0m"
echo -e "33[34m 蓝色字 33[0m"
echo -e "33[35m 紫色字 33[0m"
echo -e "33[36m 天蓝字 33[0m"
echo -e "33[37m 白色字 33[0m"
echo -e "33[40;37m 黑底白字 33[0m"
echo -e "33[41;37m 红底白字 33[0m"
echo -e "33[42;37m 绿底白字 33[0m"
echo -e "33[43;37m 黄底白字 33[0m"
echo -e "33[44;37m 蓝底白字 33[0m"
echo -e "33[45;37m 紫底白字 33[0m"
echo -e "33[46;37m 天蓝底白字 33[0m"
echo -e "33[47;30m 白底黑字 33[0m"
原文地址:https://www.cnblogs.com/fengzi7314/p/14139319.html