shell指令碼小結
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
上一篇:如何來做好景區運營?
下一篇:停車場所有車位部署充電樁可能嗎?