linux test 條件表達式工具

工做中遇到test的命令 總結一下。(很經常使用)平時工做太忙 寫的文檔太潦草請原諒。但願對你有所幫助。
node


此文只是總結常見的工做中用的比較多。(至少我是用過了)linux


言歸正傳 。shell


最好的辦法就是本身去 man test 領悟下。[其中標記***重點 最下方有例子能夠說明]ide


NAME測試

       test - check file types and compare valuesspa

選項文檔

-b<文件>:若是文件爲一個塊特殊文件,則爲真;it

-c<文件>:若是文件爲一個字符特殊文件,則爲真;class

-d<文件>:若是文件爲一個目錄,則爲真;test

-e<文件>:若是文件存在,則爲真;

-f<文件>:若是文件爲一個普通文件,則爲真;

-g<文件>:若是設置了文件的SGID位,則爲真;

-G<文件>:若是文件存在且歸該組全部,則爲真;

-k<文件>:若是設置了文件的粘着位,則爲真;

-O<文件>:若是文件存在而且歸該用戶全部,則爲真;

-p<文件>:若是文件爲一個命名管道,則爲真;

-r<文件>:若是文件可讀,則爲真;

-s<文件>:若是文件的長度不爲零,則爲真;

-S<文件>:若是文件爲一個套接字特殊文件,則爲真;

-u<文件>:若是設置了文件的SUID位,則爲真;

-w<文件>:若是文件可寫,則爲真;

-x<文件>:若是文件可執行,則爲真。


判斷表達式


if test      #表達式爲真

if test !     #表達式爲假

test 表達式1 –a 表達式2      #兩個表達式都爲真

test 表達式1 –o 表達式2      #兩個表達式有一個爲真

test 表達式1  ! 表達式2        #條件求反


判斷整數


test 整數1 -eq 整數2    #整數相等

test 整數1 -ge 整數2    #整數1大於等於整數2

test 整數1 -gt 整數2    #整數1大於整數2

test 整數1 -le 整數2    #整數1小於等於整數2

test 整數1 -lt 整數2    #整數1小於整數2

test 整數1 -ne 整數2    #整數1不等於整數2


判讀文件


test File1 –ef File2    兩個文件是否爲同一個文件,可用於硬鏈接。主要判斷兩個文件是否指向同一個inode。

test File1 –nt File2    判斷文件1是否比文件2新

test File1 –ot File2    判斷文件1比是否文件2舊

test –b file   #文件是否塊設備文件

test –c File   #文件而且是字符設備文件

test –d File   #文件而且是目錄

test –e File   #文件是否存在 (經常使用)

test –f File   #文件是否爲正規文件 (經常使用)

test –g File   #文件是不是設置了組id

test –G File   #文件屬於的有效組ID

test –h File   #文件是不是一個符號連接(同-L)

test –k File   #文件是否設置了Sticky bit位

test –b File   #文件存在而且是塊設備文件

test –L File   #文件是不是一個符號連接(同-h)

test –o File   #文件的屬於有效用戶ID

test –p File   #文件是一個命名管道

test –r File   #文件是否可讀

test –s File   #文件是不是非空白文件

test –t FD     #文件描述符是在一個終端打開的

test –u File   #文件存在而且設置了它的set-user-id位

test –w File   #文件是否存在並可寫

test –x File   #文件屬否存在並可執行


語法


         格式1: test <測試表達式>

         格式2:    [<測試表達式>]

         格式3:    [[<測試表達式>]]


其中的 :格式1和格式2是等價的。 我的推薦使用格式二、固然您能夠本身選擇。愛好問題。

  

提示:

在[[]]中能夠使用通配符進行模式匹配。&&、||、>、<等操做符能夠應用於[[]]中,但不能應用於[] 中。


語法例子:

[root@shell ~]# test -f linux-1.ht &&echo 0 || echo 1 
1
[root@shell ~]# touch linux-1.ht
[root@shell ~]# test -f linux-1.ht &&echo 0 || echo 1
0
test $? -eq 0 && echo 1||echo 0
test ! -f linux  !
 
[root@shell ~]# arg="oldboy"
[root@shell ~]# echo $arg
oldboy
[root@shell ~]# test -z "$arg" &&echo true||echo false  
false

 

格式2:[<測試 表達式>]

[root@shell ~]# [ -f linux ] && echo true ||echo false
false
[root@shell ~]# touch linux
[root@shell ~]# [ -f linux ] && echo true ||echo false
true
[root@shell ~]# [ -f linux ] && echo true
true
[root@shell]# [ $a -gt $b ]&& echo 1 ||echo 0 
0
[root@shell]# [ $a -lt $b ]&& echo 1 ||echo 0
1
[root@shell]# [[ $a > $b ]]&& echo 1 ||echo 0  
0
[root@shell]# [[ $a < $b ]]&& echo 1 ||echo 0
1


經操做>和<在單 [  ]中須要轉義

[root@shell]# [ $a < $b ]&& echo 1 ||echo 0 
1
[root@shell]# [ $a > $b ]&& echo 1 ||echo 0
1
[root@shell]# [ $a \> $b ]&& echo 1 ||echo 0
0
[root@shell]# [ $a \< $b ]&& echo 1 ||echo 0 
1
相關文章
相關標籤/搜索