一、test命令
1、格式
測試表達式是否成立,若成立返回0,否則返回其他數值。
格式1: test 條件表達式 格式2: [ 條件表達式 ]
2、實例操作
二、文件測試
1、格式:
操作符 文件名或者目錄名
2、常用的測試操作符
-d∶ 測試是否為目錄(Directory)
-e∶ 測試目錄或文件是否存在(Exist)
-f∶ 測試是否為文件(File)
-r∶ 測試當前用戶是否有權限讀取(Read)
-w∶ 測試當前用戶是否有權限寫入(Write)
-x∶測試當前用戶是否有權限執行(eXcute)
-L∶測試是否為軟鏈接文件
3、實例操作
三、整數值比較
1、格式
[ 整數1 操作符 整數2 ]
2、.常用的測試操作符
-eq∶ 等於(Equal) -ne∶ 不等於(Not Equal) -gt∶ 大於(Greater Than) -lt∶ 小於(Lesser Than) -le∶ 小於或等於(Lesser or Equal)· -ge∶ 大於或等於(Greater or Equal)
3、實例操作
3.1 結合邏輯與進行查詢當前目錄下的文件數目
3.2 查看系統內存是否低於或者高於1024M,如果滿足條件則提示
3.3 使用雙括號加數字進行表示
四、字符串比較
1、格式
[ 字符串1 = 字符串2 ] #判斷是否相等 [ 字符串1 != 字符串2 ] #判斷是否不等
[ -z 字符串 ] #是否空值
[ -n 字符串 ] # 字符集是否存在
2.常用的測試操作符
- =∶ 字符串內容相同
- !=∶ 字符串內容不同,!號表示相反的意思
- z∶字符串內容為空
3、實例操作
五、邏輯測試(三元運算符)
1、格式
格式1∶ [ 表達式1 ] 操作符 [ 表達式2 ]… 格式2∶ 命令1 操作符 命令2…
2、常用的測試操作符
- -a或&&∶ 邏輯與,"而且"的意思
- -o或||∶ 邏輯或,"或者"的意思
- !∶邏輯否
3、實例操作一
4、實例操作二
#!/bin/bash #Ping test ping -c 3 -i 0.5 -w 2 $1 &> /dev/null && echo "$1 is online!" || echo "$1 is offline!"
六、if語句
1、 單分支結構
如果只有一個判斷式要進行,那么我們可以使用單分支的if語句
1.1 格式
if [ 條件判斷式 ]; then 當條件判斷成立時,可以進行的命令工作內容 fi #這里將if反過來寫,結束if語句的意思
1.2 原理圖:
1.3 實例操作
2、雙分支結構
在同一個數據的判斷中,如果該數據需要進行兩種不同的判斷,我們就需要雙分支if語句了:
2.1 格式
if [ 條件判斷式 ]; then 當條件判斷成立時,可以進行的命令工作內容 else 當條件判斷不成立時,可以進行的命令工作內容 fi
2.2 原理圖:
2.3 實例操作一
2.4 實例操作二
#!/bin/bash #Shut down httpd service netstat -natp | grep :80 &> /dev/null if [ $? -eq 0 ];then echo "httpd 服務正常運行!" else echo "httpd 服務未開啟,正在開啟服務......" systemctl start httpd && echo "httpd 服務啟動成功" fi
3、多分支結構
如果數據需要進行多種不同的判斷,則可以使用多分支結構
3.1 格式
if [ 條件判斷式 ]; then 當條件判斷成立時,可以進行的命令工作內容 elif [ 條件判斷式二 ]; then 當條件判斷成立時,可以進行的命令工作內容 else 當上面的條件判斷都不成立時,可以進行的命令工作內容 fi
3.2 原理圖:
3.3 實例操作
七、case語句結構
1.格式:
case 變量名稱 in “第一個變量內容” 程序段 ;; “第二個變量內容” 程序段 ;; *) 不包含第一個變量內容與第二個變量內容的其他程序執行段 默認程序段 ;; esac
2、 實例操作一
#!/bin/bash #Determine grades and scores read -p "請輸入你的分數(0-100):" score [ $score -ge 90 -a $score -le 100 ] && a="great" [ $score -ge 70 -a $score -le 89 ] && a="medium" [ $score -ge 60 -a $score -le 69 ] && a="pass" [ $score -lt 60 ] && a="fail" case $a in great) echo "優秀" ;; medium) echo "中等" ;; pass) echo "及格" ;; fail) echo "不及格" ;; *) echo "輸入有誤" esac
3、實例操作二
#!/bin/bash #Determine Input read -p "請輸入一個字符:" string case "$string" in [a-z]|[A-Z]) echo "你輸入的是字母" ;; [0-9]) echo "你輸入的是數字" ;; *) echo "你輸入的是其他字符" esac
八、總結
1、test命令:
兩種格式
test 條件表達式
[條件表達式]
2、文件測試
-d -e -f -r -w -L
3、整數值比較
-eq -ge -le -gt -lt -ne
4、字符串比較
相等=
不相等 !=
空值 -z
是否存在 -n
5、邏輯測試
邏輯與:-a 或者&&
邏輯或:-o 或者||
邏輯否:!
6、if語句
單分支
雙分支
多分支
當 if 語句中使用 [ ] 條件修飾符時, $flag 變量必須加上引號。
當 if 語句中使用 [[]] 條件修飾符時,$flag 變量的引號可有可無。
7、case語句
多分支結構