1 按照文件類型進行判斷
-b 文件:判斷該文件是否存在,並且是否為塊設備文件(是塊設備文件為真)
-c 文件:判斷該文件是否存在,並且是否為字符設備文件(是字符設備文件為真)
-d 文件:判斷該文件是否存在,並且是否為目錄文件(是目錄文件為真)
-e 文件:判斷該文件是否為真(存在為真)
-f 文件:判斷該文件是否存在,並且是否為普通文件(是普通文件為真)
-L 文件:判斷該文件是否存在,並且是否為符號鏈接文件(是符號鏈接文件為真)
-p 文件:判斷該文件是否存在,並且是否為管道文件(是管道文件為真)
-s 文件:判斷該文件是否存在,並且是否為非空(為非空是真)
-S 文件:判斷該文件是否存在,並且是否為套接字文件(是套接字文件為真)
兩種判斷格式
test -e /root/install.log
[ -e /root/install.log ]
我們知道$?可以判斷上一個命令是否正確執行,0是正確執行,非0是錯誤執行
但是這樣太麻煩,我們可以用另外一種方法
如果是真,輸出yes,如果非真,輸出no
2 按照文件權限進行判斷
-r 文件:判斷該文件是否存在,並且是否該文件具體讀權限(有讀權限為真)
-w 文件:判斷該文件是否存在,並且是否該文件具有寫權限(有寫權限為真)
-x 文件:判斷該文件是否存在,並且是否該文件具有執行權限(有執行權限為真)
-u 文件:判斷該文件是否存在,並且是否該文件具有SUID權限(有SUID權限為真)
-g 文件:判斷該文件是否存在,並且是否該文件具有SGID權限(有SGID權限為真)
-k 文件:判斷該文件是否存在,並且是否該文件具有SBit權限(有SBit權限為真)
注意,這裡判斷有什麼權限只要文件擁有者,所屬組和其他人,任何一個有相應的權限,就算有
3 兩個文件之間進行比較
文件1 -nt 文件2:判斷文件1的修改時間是否比文件2新(如果新則為真)
文件1 -ot 文件2:判斷文件1的修改時間是否比文件2舊(如果舊則為真)
文件1 -et 文件2:判斷文件1是否和文件2的Inode號一致,可以理解為兩個文件是否為同一個文件,這個判斷用於判斷硬鏈接是很好的方法
4 兩個整數之間的比較
整數1 -eq 整數2:判斷整數1是否和整數2相等(相等為真)
整數1 -ne 整數2:判斷整數1是否和整數2不相等(不相等為真)
整數1 -gt 整數2:判斷整數1是否大於整數2(大於為真)
整數1 -lt 整數2:判斷整數1是否小於整數2(小於為真)
整數1 -ge 整數2:判斷整數1是否大於等於整數2(大於等於為真)
整數1 -le 整數2:判斷整數1是否小於等於整數2(小於等於為真)
5 字符串的判斷
-z 字符串:判斷字符串是否為空(為空返回真)
-n 字符串:判斷字符串是否為非空(非空返回真)
字符串1==字符串2:判斷字符串1和字符串2是否相等(相等返回真)
字符串1!=字符串2:判斷字符串1和字符串2是否不等(不等返回真)
6 多重判斷條件
判斷1 -a 判斷2 :邏輯與,判斷1和判斷2都成立,最終的結果才為真
判斷1 -o 判斷2:邏輯或,判斷1和判斷2有一個成立,最終的結果就為真
! 判斷:邏輯非,使原始的判斷式取反
好了,Linux Shell編程-條件判斷就總結到這裡,如有問題,歡迎指正,謝謝。