hello,今天分享的是shell實現彩色進度條。
進度條,通過顯示字元所佔列印字元的比率,字元的數目的增加,以及長度的變化在顯示器上模擬出進度條的變化;
下面**實現的是漸變色,執行時色度不停會發生變化,主要是引數color的變化,隨著i的變化,color=32+i%8
,color也在發生變化,所以進度條的顏色在不斷發生變化。
進度條最終停止的顏色與i%8加的這個數有關,與color的最終結果有關,加的數不同,最終顏色不同。
字型顏範圍30~39
30:黑 31:紅 32:綠 33:黃 34:藍色 35:紫色 36:深綠 37:白色 38 39親測貌似和黑色沒有多大差別
如果直接設定顏色, 不設定color變數,直接echo -en 「\e[30m」 這樣把顏色直接設定成一種,列印時就不會出現漸變顏色的進度條,而是特定的顏色。
i=0
str=''
index=0
label=('|'
'/''-'
'\\')
while [ $i -le 100 ]
do let index=i%4
let color=32+i%8
echo -en "\e[1;"
$color
"m"printf
"[%-100s][%d
%%][%c]\r"
"$str"
"$i"
"$" str='#'
$str
sleep
0.1 let i++
done
echo -e "\e[1;m"
下圖就是改變加的那個數所得的不同結果:
當然還可以改變底色:
字背景顏色範圍40~49
40:黑 41:深紅 42:綠 43:黃色 44:藍色 45:紫色 46:深綠 47:白色 48 49親測和上面38 39 沒有多大區別,白底黑#列印
**:
i=0
str=''
index=0
label=('|'
'/''-'
'\\')
while [ $i -le 100 ]
do let index=i%4
echo -en "\e[43m" //可更改43 為40~49之間的其他數字,改變底色
printf
"[%-100s][%d
%%][%c]\r"
"$str"
"$i"
"$" str='#'
$str
sleep
0.1 let i++
done
echo -e "\e[1;m"
不同底色執行結果如下:
shell之彩色進度條
bin bash b for i 0 i 100 i 1 do printf e 32m progress e 31m 100s e 33m d r b i 100s 設定初始顯示格數 r return,回到開始輸出的地方 sleep 0.1 b done echo 下面是字型輸出顏色及終端格式控制...
Shell指令碼下的彩色進度條
顏色是通過新增專用序列來選擇的 夾在 e 和 m 之間的數字。如果指定乙個以上的數字,則用分號將它們分開。echo e e 31 42m 使用 e 0m 序列將顏色重新設定為正常值 顏色分類 e 30m e 37m 設定前景色 字型顏色 echo e e 30m 灰色 echo e e 31m 紅色...
shell指令碼實現乙個彩色的進度條
首先來了解一下如何設定終端的字元顏色 終端的字元顏色由轉義序列 escape sequence 控制,是文字模式下的系統顯示功能,與具體語言無關。轉義序列以控制字元 esc 開頭。該字元的ascii碼十進位制表示為27,十六進製制表示為0x1b,八進位制表示為033。多數轉義序列超過兩個字元,故通常...