shell語法及進度條

2021-08-03 05:17:38 字數 2838 閱讀 7582

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 有些獨特,因為它不僅是乙個功能強大的命令列介面,也是乙個指令碼語言直譯器。我們將會看到,大多數能夠在命令列...