您當前的位置:首頁 > 旅遊

shell指令碼小結

作者:由 劍13 發表于 旅遊時間:2022-12-13

Shell是一個應用程式,提供了一個可供編輯的介面,我們可以透過這個介面來實現對作業系統的管理;shell和shell指令碼應該區別對待,shell指令碼是在shell環境中編寫的指令碼程式,shell指令碼客觀來看就是一個可執行的檔案,可以將多個linux命令寫在一個shell指令碼中,執行一個指令碼就可以實現指令碼中的命令。Vi是用來新建和編輯shell指令碼的命令。指令碼的執行方式有兩種,一種為編輯完成之後,為指令碼新增可執行許可權,然後使用。/指令碼檔案;第二種為/bin/bash 指令碼檔案的名字,第二種執行方式沒有可執行的許可權。在shell指令碼執行過程中可以改變的量稱之為變數,與變數對應的為常量,意為在指令碼執行過程中無法更改的量。Shell中變數的分為系統預設變數和使用者自定義變數,變數名的命名規則,首個字元必須是字母,變數名中不能存在空格,但是可以有_下劃線連結,不能出現標點符號,不能存在linux命令有關的關鍵字。呼叫變數儲存的值要使用$符,輸出變數的的值為echo $變數名,字串指的是由多個字元構成,用雙引號引起來的;字元指的是單個字元用單引號引起來,獲取字串要使用#符,提取字串需要根據下標進行,下標=位置對應的數字-1,陣列是由多個相同型別的資料構成的集合,沒有限定陣列的大小,但是每個陣列中的元素必須屬於同種型別。陣列中的值要使用空格來隔開,獲取單個元素要根據這個元素的下標來進行,獲取全部元素要使用@符,計算陣列的個數為${#陣列名[@]},在指令碼中添加註釋的方式為#註釋的內容,註釋不參與指令碼的執行,指令碼中的算數運算子有+ - * / % expr為計算表示式工具,需要使用反引號包裹,在expr工具中無法直接識別*,需要使用\(轉義符)來進行轉義,\*,

== 相等或恆等,判斷兩個數是否相等,相等返回true(成立),不相等返回false(不成立)

!= 不相等 判斷兩個數是否相等,不相等返回true,相等返回false

判斷條件語句:if

第一種格式:只關注條件成立的結果,條件不成立無結果輸出

If [ 判斷條件 ]

Then

語句塊

Fi

格式二:不管判斷條件是否成立,都有對應的操作

If [ 判斷條件 ]

Then

語句塊1(成立執行)

Else

語句塊(不成立執行)

Fi

關係運算符 操作的物件為數字

-eq 相等 -ne 不相等 -gt大於 -ge大於等於 -lt小於 -ge 小於等於

布林運算子 (連結多個表示式,最後的輸出結果只有兩個,一個為true,一個為false)

!非運算(取反) -a 與運算(只要有一個結果為false,最後的輸出結果為false),-o 或運算 (只要有一個結果為true,整體的結果就為true)

邏輯運算子 邏輯運算子使用雙中括號 [[]]

&& 邏輯與 || 邏輯或

字串運算子

= 相等 !=不相等 -z為0返回true -n不為0返回true

檔案測試運算子

-d 判定是否為目錄

-f 判斷是否為檔案

-r -w -x 判斷許可權

-s 判斷檔案是否為空

-e 判斷檔案或目錄是否存在

Echo命令 輸出

跳脫字元:\ 格式:\字元

\n自動轉行 \t 水平製表符 \b 後退(刪除前一個字元) \c 不轉行顯示 \\ \”

在指令碼中,除了轉義符號外,其他的轉義操作都必須藉助-e引數來開啟轉義

Read 從終端中讀取一行資料,把讀取到的資料交給shell中的變數

Read 變數名

定向符

> 把顯示的結果定向儲存到某個檔案(覆蓋檔案之前的內容)

>> 把現實的結果定向儲存至某個檔案(追加儲存,檔案之前的內容不變)

輸出命令的執行結果(把命令的執行結果當做字串來輸出,需要使用反引號來包裹linux命令,)

格式 echo `linux命令`

第二種輸出命令

Printf 輸出

格式 printf 格式宣告 與格式宣告所對應的引數列表

格式宣告:%d 數值型 %s 字串 %c 字元 %f 浮點數(小數)

Printf 具有自動劃分的操作,當傳遞過來的內容過多的情況下,會根據格式自動進行分組顯示(printf命令不具備轉行,需使用引數\n)

Test 測試運算子 相等於[] 判斷條件所必須的符號

能夠和測試做結合,進行判定工作

在判斷條件中,如果有!非,與-o,或,與-a 同時連結多個測試條件,優先順序為:!非運算>-a與運算>-o或運算

運算方式二:

格式:$((計算表示式))(表示式的括號為英文格式)

if 語句格式三:針對多個條件存在的情況下,每個條件都有自己的操作內容

If [ 判斷條件1 ]

Then

語句塊1

Elif [ 判斷條件2 ]

Then

語句塊2

Else (上面羅列的所有條件都無法滿足的情況下執行else)

語句塊n

Fi

Case語句

Case $變數名 in

值1)

語句塊1

;;

值2)

語句塊2

;;

*)(上面的所有條件全部不滿足)

語句塊n

;;

Esac

迴圈語句:

格式:

While((判斷條件))

Do

迴圈體

Done

思想:當判斷條件成立,就執行do和done之間的迴圈體語句;當條件不成立,迴圈結束

Let命令 能夠讓表示式進行計算,而且變數的呼叫不用使用$符

自增運算子 ++ ==>+1

自減運算子 —— ==>-1

跳出迴圈:指的是在未達到迴圈終止的條件,跳出迴圈

Break 強制跳出迴圈(終止迴圈),不在執行,無條件退出

Continue:跳轉到迴圈開始的地方(迴圈判定條件)

死迴圈:指的是迴圈判斷條件永遠成立

While:

Do

迴圈體

Done

While:後面的冒號:代表的是條件永遠成立true :——>true

標簽: 語句  運算子  指令碼  格式  條件