模拟linux开机服务检测打印效果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟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开机服务检测打印效果的主要内容,如果未能解决你的问题,请参考以下文章