shell語法
1.條件測試
整數比較: -eq(相等)、-lt(小於)、-le(小於等於)、-gt(大於)、-ge(大於等於)、-ne(不等)
字串比較:==(等於) !=(不等於)
$?用來判斷退出碼
常見的測試命令:
[ -d dir ] dir存在且為目錄則為真
[ -f file ] file存在且為普通檔案則為真
[ -z str ] str長度為0則為真
[ -n str ] str長度非0則為真
與c語言相同,測試條件之間還可以做與、或、非邏輯運算
-a(與) -o(或) !(非)
如果str沒有被定義,則shell會將其看做空字串,會造成測試條件的語法錯誤。
&&和||也可以用在if中,用來連線兩個測試條件
2.迴圈語句
for (( i=0; i<10; i++ )) //(())括起來的內容,可以做c規範來操作
doecho
"$i"
done
for i in
doecho
"$i"
done
i=0
while [ $i
-lt10 ]
doecho
"$i"
(( i++ ))
done
i=0
until [ $i
-gt10 ]
doecho
"$i"
let i++
done
3.位置引數和特殊變數
$0-n 命令列引數
$# 命令列引數的個數減1
$@ 命令列引數的列表
$$ 當前shell的程序號
位置引數用shift左移 如: shift 1 $3就變成$2
4.函式
(1)shell中函式必須先定義再使用
(2)函式體的 寫在一行,則必須加『;』
(3)定義函式時並不執行裡面的命令,到後面呼叫時才執行
(4)關鍵字function可以省略,()不可以省略,**塊不能為空
//求最大最小值
function myfun
()myfun $@ //呼叫函式,傳參
echo
"max=$max"
echo
"min=$min"
5.陣列
(1)bash支援一維陣列,不限定陣列大小,下標從0開始
(2)用括號表示陣列,元素用空格分隔
(3)不會越界,沒有型別
例:arr=(1 3.14 『c』 「hello world」)
提取陣列元素: $,使用@或*可以獲取陣列中所有元素
shell編寫進度條
#!/bin/bash
i=0str=""
arr=("|"
"/""-"
"\\")
while [ $i -le 100 ]
dolet index=i%4
printf
"[%-100s][%d%%][%c]\r"
"$str"
"$i"
"$" //printf也是一條命令
sleep 0.1
let i++
str+='#' //字串連線
done
還有一種使用了簡單配色方案的進度條
printf如下:
printf "[%-100s][%d%%][\e[54;41;1m%c\e[0m]\r" "$str" "$i" "$"
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實現彩色進度條
hello,今天分享的是shell實現彩色進度條。進度條,通過顯示字元所佔列印字元的比率,字元的數目的增加,以及長度的變化在顯示器上模擬出進度條的變化 下面 實現的是漸變色,執行時色度不停會發生變化,主要是引數color的變化,隨著i的變化,color 32 i 8 color也在發生變化,所以進度...
shell指令碼實現進度條功能
一,什麼是shell指令碼。乙個 shell 指令碼就是乙個包含一系列命令的檔案。shell 讀取這個檔案,然後執行 檔案中的所有命令,就好像這些命令已經直接被輸入到了命令列中一樣。shell 有些獨特,因為它不僅是乙個功能強大的命令列介面,也是乙個指令碼語言直譯器。我們將會看到,大多數能夠在命令列...