天天看点

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

继续阅读