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編程之測試條件