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