一,什麼是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也在發生變化,所以進度...