1. 程式人生 > >shell學習--[、test測試的使用

shell學習--[、test測試的使用

一、在shell中,測試會設定返回的狀態,test是一個內建命令,test會根據expr表示式的求值結果返回真或者假,同時也可以使用方括號[],test expr和[ expr ]是等價的,可以使用$?來檢查返回值。
-o 操作符允許測試利用 set -o 選項 設定的各種 shell 選項,如果設定了該選項,則返回 True (0),否則返回 False (1)

1、檔案判斷
若判斷符合則返回true,判斷不符合則為false

-e 檔名         #檔案存在則為真
-r 檔名         #檔案存在且可讀則為真
-w 檔名         #檔案存在且可寫則為真
-x 檔名         #檔案存在且可執行則為真
-s 檔名 #檔案存在且長度不為0則為真 -d 檔名 #檔案存在且為目錄則為真 -f 檔名 #檔案存在且為普通檔案則為真 -c 檔名 #檔案存在且為字元型特殊檔案則為真 -b 檔名 #檔案存在且為塊特殊檔案則為真

2、數字判斷

test num1 -eq num2       #num1=num2則為真
test num1 -ne num2       #num1!=num2時為真
test num1 -gt num2       #num1>num2時為真
test num1 -ge num2       #num1
>=num2時為真 test num1 -lt num2 #num1<num2時為真 test num1 -le num2 #num1<=num2時為真

3、兩個檔案比對的測試

-nt   #測試 file1 是否比 file2 更新。修改日期將用於這次和下次比較。
-ot      #測試 file1 是否比 file2 舊。
-ef      #測試 file1 是不是 file2 的硬連結。

4、字串判斷

#字串比較:
str1 = str2            #str1=str2時為真
str1 != str2           #str1!=str2時為真
-z str1 #str1的長度為0的話返回真 -n str1 #str1長度不位0的話返回真

注意:
shell中會用到<和>操作符進行重定向,在使用<、>進行字串的大小比較的時候需要進行轉義=>(\<和>)
[]進行判斷的時候[ “abc” > “def” ]中括號與字串中間的空格必須存在!
這裡寫圖片描述

二、(( )) 和 [[ ]]

(( ))複合命令 計算算術表示式,如果表示式求值為 0,則設定退出狀態為 1;如果求值為非 0 值,則設定為 0。不需要對 (( 和 )) 之間的操作符轉義。算術只對整數進行。除 0 會產生錯誤,但不會產生溢位。可以執行 C 語言中常見的算術、邏輯和位操作。 let 命令也能執行一個或多個算術表示式。它通常用來為算術變數分配值。

這裡寫圖片描述

執行結果:
這裡寫圖片描述