6.1 SHELL指令碼
6.1 SHELL指令碼元素
第一行的指令碼宣告(#!)用來告訴系統使用哪種Shell直譯器來執行該指令碼;
第二行的註釋資訊(#)是對指令碼功能和某些命令的介紹資訊,使得自己或他人在日後看到這個指令碼內容時,可以快速知道該指令碼的作用或一些警告資訊;
第三、四行的可執行語句也就是我們平時執行的Linux命令了
[root@linuxprobe ~]# vim example.sh #!/bin/bash #For Example BY linuxprobe.com pwd ls -al
6.2 內建引數
Linux系統中的Shell指令碼語言內設了用於接收引數的變數,變數之間使用空格間隔。例如,$0對應的是當前Shell指令碼程式的名稱,$#對應的是總共有幾個引數,$*對應的是所有位置的引數值,$?對應的是顯示上一次命令的執行返回值
6.3 條件測試語句
操作符 | 作用 |
-d | 測試檔案是否為目錄型別 |
-e | 測試檔案是否存在 |
-f | 判斷是否為一般檔案 |
-r | 測試當前使用者是否有許可權讀取 |
-w | 測試當前使用者是否有許可權寫入 |
-x | 測試當前使用者是否有許可權執行 |
&&是邏輯“與”,只有當前面的語句執行成功的時候才會執行後面的語句。
||是邏輯“或”,只有當前面的語句執行失敗的時候才會執行後面的語句。
!是邏輯“非”,代表對邏輯測試結果取反值;之前若為正確則變成錯誤,若為錯誤則變成正確。
6.4 整數比較運算子
操作符 | 作用 |
-eq | 是否等於 |
-ne | 是否不等於 |
-gt | 是否大於 |
-lt | 是否小於 |
-le | 是否等於或小於 |
-ge | 是否大於或等於 |
6.5 字串比較運算子
操作符 | 作用 |
= | 比較字串內容是否相同 |
!= | 比較字串內容是否不同 |
-z | 判斷字串內容是否為空 |
6.6 流程控制語句
if條件測試語句
if條件語句的單分支結構由if、then、fi關鍵片語成,而且只在條件成立後才執行預設的命令,相當於口語的“如果……那麼……”。
[root@linuxprobe ~]# vim mkcdrom.sh #!/bin/bash DIR="/media/cdrom" if [ ! -d $DIR ] then mkdir -p $DIR fi
if條件語句的雙分支結構由if、then、else、fi關鍵片語成,它進行一次條件匹配判斷,如果與條件匹配,則去執行相應的預設命令;反之則去執行不匹配時的預設命令,相當於口語的“如果……那麼……或者……那麼……”。
if條件語句的多分支結構由if、then、else、elif、fi關鍵片語成,它進行多次條件匹配判斷,這多次判斷中的任何一項在匹配成功後都會執行相應的預設命令,相當於口語的“如果……那麼……如果……那麼……”。
for條件迴圈語句
for迴圈語句允許指令碼一次性讀取多個資訊,然後逐一對資訊進行操作處理。
while條件迴圈語句
while條件迴圈語句是一種讓指令碼根據某些條件來重複執行命令的語句,它的迴圈結構往往在執行前並不確定最終執行的次數,完全不同於for迴圈語句中有目標、有範圍的使用場景。while迴圈語句通過判斷條件測試的真假來決定是否繼續執行命令,若條件為真就繼續執行,為假就結束迴圈。
case條件測試語句
case語句是在多個範圍內匹配資料,若匹配成功則執行相關命令並結束整個條件測試;如果資料不在所列出的範圍內,則會去執行星號(*)中所定義的預設命令。