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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

实验下:

[[email protected] ~]# touch /cisco

[[email protected] ~]# ls

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

1.sh  2.sh   4.sh  prac3.py  求1,100之间的质数.sh

[[email protected] ~]# ./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的文件:

[[email protected] ~]# cd /cisco

[[email protected] cisco]# ls

[[email protected] cisco]# touch 31

[[email protected] cisco]# cd

[[email protected] ~]# ./3.sh

1


本文出自 “飞奔的小GUI” 博客,请务必保留此出处http://9237101.blog.51cto.com/9227101/1918344

以上是关于linux条件判断之判断文件是否存在的主要内容,如果未能解决你的问题,请参考以下文章

linux之条件判断

shell编程之常用判断条件流程控制IFcaseforWHILE循环read读取控制台输入函数basenamedirname以及自定义函数

条件控制语句之---判断命令

求Bash Shell脚本,判定文件是不是存在。

Linux:shell基础

Linux Shell编程 test命令