模擬linux開機服務檢測打印效果
阿新 • • 發佈:2018-04-03
模擬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開機服務檢測打印效果