天天看點

linux條件判斷之判斷檔案是否存在

參數

說明

-e 檔案名

如果檔案存在則為真

-r 檔案名

如果檔案存在且可讀則為真

-w 檔案名

如果檔案存在且可寫則為真

-x 檔案名

如果檔案存在且可執行則為真

-s 檔案名

如果檔案存在且至少有一個字元則為真

-d 檔案名

如果檔案存在且為目錄則為真

-f 檔案名

如果檔案存在且為普通檔案則為真

-c 檔案名

如果檔案存在且為字元型特殊檔案則為真

-b 檔案名

如果檔案存在且為塊特殊檔案則為真

執行個體示範:

輸出結果:

另外,Shell還提供了與( -a )、或( -o )、非( ! )三個邏輯操作符用于将測試條件連接配接起來,其優先級為:"!"最高,"-a"次之,"-o"最低。例如:

有一個檔案存在!

舉幾個例子:

a. 如果檔案存在且為普通檔案則為真

eg:

#判斷/cisco是否存在且是否為檔案,是的話就輸出/cisco is a file

#不是的話,就輸出/cisco是一個目錄

vim 4.sh

if [ -f /cisco ]

then

        echo /cisco is a file

else

        echo /cisco is director

fi

實驗下:

[root@wenwen ~]# touch /cisco

[root@wenwen ~]# ls

123   1.txt  3.sh  567.sql   sedWSS6gg              桌面

1.sh  2.sh   4.sh  prac3.py  求1,100之間的質數.sh

[root@wenwen ~]# ./4.sh 

/cisco is a file

b. 如果檔案存在且為目錄則為真:

#判斷/cisco/31是否存在且為目錄,存在且為目錄的話,就輸出"ok",不存在或者/cisco/31不是目錄的話,輸出1,另外建立該目錄 /cisco/31/

vim 3.sh

if [ -d /cisco/31/ ]

        echo ok

        echo 1

        rm -rf /cisco/31

        mkdir -p /cisco/31

實驗過程,在/cisco下建立檔案名為31的檔案:

[root@wenwen ~]# cd /cisco

[root@wenwen cisco]# ls

[root@wenwen cisco]# touch 31

[root@wenwen cisco]# cd

[root@wenwen ~]# ./3.sh

1

本文轉自飛奔的小GUI部落格51CTO部落格,原文連結http://blog.51cto.com/9237101/1918344如需轉載請自行聯系原作者

ziwenzhou

繼續閱讀