参数
说明
-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