linux开机检测服务状态后显示成功或者是失败的状态。有没有发现,不管服务的名称长短,最后那一段都能对齐显示呢?
模拟linux开机服务检测打印效果

我们能不能写个脚本去模拟一下呢?^_^

 来我们首先来分析一下:
 首先,确定一下当前终端的宽度
 其次,确定一下服务状态显示所占的字符数
 再次,确定一下服务名称所占的字符数
 剩余的就是打印空格了

模拟linux开机服务检测打印效果

现在思路有了,咱们来写脚本吧,编辑service_status.sh

#!/bin/bash
#
#获取当前终端的宽度
COLUMNS=`resize -u | grep "COLUMNS=" | cut -d "=" -f2 | cut -d ";" -f1`
#判断当前终端宽度是否为空,为空则设置默认值为80
[ -z $COLUMNS ] && COLUMNS='80'

#当前终端宽度减去服务状态显示所在的字符数,设置服务状态显示字符数为10,[   OK    ][ FAILED  ]
S_COLUMNS=$[$COLUMNS-10]

#设置颜色变量
RED='\033[31m'
GREEN='\033[32m'
NORMAL='\033[0m'

##设置成功服务的显示
success(){
        STRING=$1
        #真实需要打印的空格数
        R_COLUMNS=$[$S_COLUMNS-${#STRING}]
        #显示服务名称,不换行
        echo -n "$STRING"
        #接着打印空格
        for i in `seq 1 $R_COLUMNS`;do
                echo -n " "
        done
        #最后打印服务成功字样
        echo -e "[   ${GREEN}OK${NORMAL}   ]"
}

failed(){
        STRING=$1
        #真实需要打印的空格数
        R_COLUMNS=$[$S_COLUMNS-${#STRING}]
        #显示服务名称,不换行
        echo -n "$STRING"
        #接着打印空格
        for i in `seq 1 $R_COLUMNS`;do
                echo -n " "
        done
        #最后打印服务成功字样
        echo -e "[ ${RED}FAILED${NORMAL} ]"
}

接着来编辑另外一个文件test.sh,里面调用service_status.sh写的函数

#!/bin/bash
#
. ./service_status.sh

#测试启动成功服务的显示
success "Service start success!"

#测试启动失败服务的显示
failed "Service start failed~"

接下来给test.sh执行权限chmod u+x test.sh
开始执行#./test.sh
模拟linux开机服务检测打印效果