1. 程式人生 > >Linux Shell編程之測試條件

Linux Shell編程之測試條件

Linux Shell編程的簡單操作

執行命令並利用命令狀態返回值來判斷某些狀態

echo $?

0代表成功,非0代表不成功

測試表達式

數值比較

-eq 等於

技術分享圖片

返回值是1,說明2不等於3


-ne 不等於

技術分享圖片

返回值是0 說明2不等於3


還可以直接使用中括號,而不需要輸入test關鍵字

技術分享圖片

返回值為1 說明2等於2


-gt 左側是否大於右側

技術分享圖片

左側的2大於右側的1

-lt 左側是否小於右側

技術分享圖片

左側2不小於右側1

剩下還有 le(小於等於) 和ge(大於等於)


字符串比較

註意:在比較字符串的時候,最好使用雙中括號,如果有變量最好用雙引號引住

技術分享圖片

技術分享圖片

技術分享圖片

> 是否大於 < 是否小於

技術分享圖片

為什麽a要小於b?因為字符在比較時,使用的是ASCII值

!= 不等於

下面這個比較符很少見哈,叫做模式匹配

左側的字符串是否可以被右側的匹配符匹配到

技術分享圖片

這樣就算匹配上了。兩次比對,第一次成功,第二次失敗

如果要讓第二次也成功可以這麽寫

技術分享圖片

-z "STRINGS" 判斷STRINGS字符串是否為空

技術分享圖片

技術分享圖片技術分享圖片

-n "STRINGS"判斷 STRINGS字符串是否不空

技術分享圖片

正因為變量name值為空,所以-n的返回值為1.

腳本返回值

默認是腳本中最後一條命令的狀態返回值,管理員可以自定義腳本返回值

exit[n] n就是返回的值,shell腳本中遇到exit就會退出程序

文件測試

查看文件是否存在 -e

技術分享圖片

查看文件是否為塊設備 -b

技術分享圖片

查看文件是否為字符設備文件

-c

查看文件是否為普通文件

-f

查看文件是否為目錄文件

-d


查看文件是否為符號鏈接文件

-h/-L

查看文件是否為管道文件

-p

查看文件是否為套接字文件

-S

查看文件是否存在且對當前用戶可讀

-r

查看文件是否存在且對當前用戶可寫

-w

查看文件是否存在且對當前用戶可執行

-x

查看文件是否存在且擁有SGID

-g

查看文件是否有SUID -u

技術分享圖片


查看文件是否有STICKY -k

技術分享圖片

查看文件是否存在而且有內容-s

技術分享圖片

有文件,但是文件裏面沒有內容

查看文件自上次讀取後是否被修改過

-N

查看當前用戶是否是指定文件的屬主 -O

技術分享圖片


查看當前用戶是否屬於指定文件的屬組 -G

技術分享圖片


雙目測試

-ef 兩個文件是否是指向同一個文件的兩個硬鏈接文件

-nt 左邊的文件是否比右邊的文件新? 時間以最近一次修改時間為主

-ot 左邊的文件是否比右邊的文件舊? 時間以最近一次修改時間為主

技術分享圖片

技術分享圖片

aaaa.text 比fstab.1新

技術分享圖片

fstab.1比aaaa.text文件舊


組合測試

command1 && command 2

如果第一個命令錯了,就不運行第二個命令了

如果第一個命令對了,第二個命令繼續運行

command1 || command2

如果第一個命令錯了,第二個命令就繼續運行

如果第一個命令對了,就不運行第二個命令了。

技術分享圖片

技術分享圖片

&& 等同於-a 註意 如果是-a的參數那麽表達式兩邊是單的中括號

技術分享圖片

技術分享圖片

|| 等同於 -o


非的命令

!command1

技術分享圖片

技術分享圖片



Linux Shell編程之測試條件