shell指令碼實現進度條功能

2021-08-03 07:45:34 字數 2199 閱讀 3610

一,什麼是shell指令碼。

乙個 shell 指令碼就是乙個包含一系列命令的檔案。shell 讀取這個檔案,然後執行 檔案中的所有命令,就好像這些命令已經直接被輸入到了命令列中一樣。

shell 有些獨特,因為它不僅是乙個功能強大的命令列介面,也是乙個指令碼語言直譯器。我們將會看到, 大多數能夠在命令列中完成的任務也能夠用指令碼來實現,同樣地,大多數能用指令碼實現的操作也能夠 在命令列中完成。另外shell裡面變數是弱變數型別的,這就意味著我們可以在任何時候直接使用變數,而不用定義。

二,用shell指令碼實現進度條

2.1 初始版本:

#!/bin/bash

i=0str=""

arry=("\\"

"|""/"

"-")

while [ $i -le 100 ]

dolet index=i%4

printf

"[%-100s] %d %c\r"

"$str"

"$i"

"$" sleep 0.1

let i=i+1

str+="#"

done

printf

"\n"

arry是我們定義的陣列,它用來交替顯示 這四個字元中的乙個,由於「\」在linux中含有特殊含義,所以需要用兩個「\」,乙個起轉義作用。

i用來記錄當前進度,從0-100,每次使str=str+」#」,while迴圈每次輸出str,進度,及arry中的字元。

執行結果:

2.2 改進版

首先看一下執行結果:

此時執行將會以顏色顯示,並且在百分之20,百分之45,百分之75及之上顯示不同的顏色,即產生顏色交替。該功能是在列印的時候加上顏色選項實現的,而顏色的代號又是個變數,在不同的區間會有不同的選擇。

以下為實現**:

#!/bin/bash

i=0str=""

arry=("\\"

"|""/"

"-")

while [ $i -le 100 ]

dolet index=i%4

if [ $i -le 20 ]

then

let color=44

let bg=34

elif [ $i -le 45 ]

then

let color=43

let bg=33

elif [ $i -le 75 ]

then

let color=41

let bg=31

else

let color=42

let bg=32

fiprintf

"\033[$;$m%-s\033[0m %d %c\r"

"$str"

"$i"

"$" usleep 30000

let i=i+1

str+="#"

done

printf

"\n"

與版本1不同之處便在我們在列印的時候加入了顏色屬性,首先我們來學習一下如何在linux中打出帶有顏色的字型

文字終端的顏色可以使用「ansi非常規字串行」來生成。舉例:

printf(「\033[字背景顏色;字型顏色m字串\033[0m」 );

示例:

printf(「\033[40;37 this will be colored\n\033[0m」);

echo -e 「\033[40;37this will be colored\n\033[0m」

其中40,37分別代表字型背景顏色及字型顏色,在這裡我們只需要將字型顏色與字型背景顏色選為相同的,便可以實現上圖的功能。

以下為常用的顏色代號:

字背景顏色範圍:40-

-49字顏色:30-

-3940:黑

30:黑

41:紅

31:紅

42:綠

32:綠

43:黃

33:黃

44:藍

34:藍

45:紫

35:紫

46:深綠

36:深綠

47:白色

37:白色

shell指令碼實現多彩進度條

先貼 bin bash i 0 str arr while i le 100 do let index i 4 let indexcolor i 8 let color 30 indexcolor printf e 0 color 1m 100s d c r str i sleep 0.1 let ...

shell指令碼編寫進度條

在之前,我們介紹過在linux中用c語言編寫簡易進度條。今天我們來看看用shell指令碼該如何編寫。首先,同樣的建立乙個字尾為.sh的檔案,然後vim 檔名,進入檔案開始編寫 直接上shell指令碼的進度條 儲存退出後,就要執行了 執行指令碼的方法有好幾種,在這裡介紹我常用的一種 bar.sh是我進...

shell實現彩色進度條

hello,今天分享的是shell實現彩色進度條。進度條,通過顯示字元所佔列印字元的比率,字元的數目的增加,以及長度的變化在顯示器上模擬出進度條的變化 下面 實現的是漸變色,執行時色度不停會發生變化,主要是引數color的變化,隨著i的變化,color 32 i 8 color也在發生變化,所以進度...