码迷,mamicode.com
首页 > 系统相关 > 详细

linux条件判断之判断文件是否存在

时间:2017-04-21 21:50:39      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:linux   优先级   

参数说明
-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写则为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-c 文件名如果文件存在且为字符型特殊文件则为真
-b 文件名如果文件存在且为块特殊文件则为真

实例演示:

cd /binif test -e ./bashthen
    echo ‘文件已存在!‘else
    echo ‘文件不存在!‘fi

输出结果:

文件已存在!

另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。例如:

cd /binif test -e ./notFile -o -e ./bashthen
    echo ‘有一个文件存在!‘else
    echo ‘两个文件都不存在‘fi

输出结果:

有一个文件存在!



举几个例子:

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/ ]

then

        echo ok

else

        echo 1

        rm -rf /cisco/31

        mkdir -p /cisco/31

fi

实验过程,在/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” 博客,请务必保留此出处http://9237101.blog.51cto.com/9227101/1918344

linux条件判断之判断文件是否存在

标签:linux   优先级   

原文地址:http://9237101.blog.51cto.com/9227101/1918344

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!