1. 程式人生 > 其它 >6.1 SHELL指令碼

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指令碼程式的名稱,$#對應的是總共有幾個引數,$*對應的是所有位置的引數值,$?對應的是顯示上一次命令的執行返回值

,而$1、$2、$3……則分別對應著第N個位置的引數值

 

 

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語句是在多個範圍內匹配資料,若匹配成功則執行相關命令並結束整個條件測試;如果資料不在所列出的範圍內,則會去執行星號(*)中所定義的預設命令。