if文件目录属性判断
if 判断文件、目录属性
[ -f file ]判断是否是普通文件,且存在
[ -d file ] 判断是否是目录,且存在
[ -e file ] 判断文件或目录是否存在
[ -r file ] 判断文件是否可读
[ -w file ] 判断文件是否可写
[ -x file ] 判断文件是否可执行
文件目录属性判断
if 判断文件、目录属性
[ -f file ]判断是否是普通文件,且存在
[root@xuexi-001 shell]# vi file1.sh
#!/bin/bash
f="/tmp/aminglinux"
if [ -f $f ]
then
echo $f exist
else
touch $f
fi
[root@xuexi-001 shell]# cat file1.sh
#!/bin/bash
f="/tmp/aminglinux"
if [ -f $f ]
then
echo $f exist
else
touch $f
fi
[root@xuexi-001 shell]# chmod +x file1.sh
[root@xuexi-001 shell]# sh file1.sh #执行完后这个文件已经创建
[root@xuexi-001 shell]# ls /tmp/
aminglinux
[root@xuexi-001 shell]# sh -x file1.sh
+ f=/tmp/aminglinux
+ '[' -f /tmp/aminglinux ']'
+ echo /tmp/aminglinux exist
/tmp/aminglinux test
[root@xuexi-001 shell]# sh file1.sh
/tmp/aminglinux test
if 判断文件、目录属性
[ -d file ] 判断是否是目录,且存在
[root@xuexi-001 shell]# sh -x file2.sh
+ f=/tmp/aminglinux1
+ '[' -d /tmp/aminglinux1 ']'
+ echo /tmp/aminglinux1 exist
/tmp/aminglinux1 exist
[root@xuexi-001 shell]# ls /tmp/aminglinux
aminglinux aminglinux1/
[root@xuexi-001 shell]# ls /tmp/aminglinux
/tmp/aminglinux
[root@xuexi-001 shell]# ls /tmp/
aminglinux
aminglinux1
if 判断文件、目录属性
[ -e file ] 判断文件或目录是否存在
目录和文件都可以touch 的,touch的目的是 如果这个文件或目录不存在,它会创建这个文件,如果这个文件或目录存在了,在touch 就会更改这个文件的三个 time
[root@xuexi-001 shell]# vi file2.sh
#!/bin/bash
f="/tmp/aminglinux2"
if [ -e $f ]
then
echo $f exist
else
touch $f
fi
[root@xuexi-001 shell]# sh file2.sh
[root@xuexi-001 shell]# sh -x file2.sh
+ f=/tmp/aminglinux2
+ '[' -e /tmp/aminglinux2 ']'
+ echo /tmp/aminglinux2 exist
/tmp/aminglinux2 exist
[root@xuexi-001 shell]# ls /tmp/
aminglinux
aminglinux1
aminglinux2
if 判断文件、目录属性
[ -r file ] 判断文件是否可读
[root@xuexi-001 shell]# vi file2.sh
#!/bin/bash
f="/tmp/aminglinux2"
if [ -r $f ]
then
echo $f readable
fi
[root@xuexi-001 shell]# sh file2.sh
/tmp/aminglinux2 readable
会看到文件可读的
if 判断文件、目录属性
[ -w file ] 判断文件是否可写
去判断是否刻度可写,就判断执行shell脚本的当前用户
[root@xuexi-001 shell]# vi file2.sh
#!/bin/bash
f="/tmp/aminglinux2"
if [ -w $f ]
then
echo $f writeable
fi
[root@xuexi-001 shell]# sh file2.sh
/tmp/aminglinux2 writeable
if 判断文件、目录属性
[ -x file ] 判断文件是否可执行
[root@xuexi-001 shell]# vi file2.sh
#!/bin/bash
f="/tmp/aminglinux2"
if [ -x $f ]
then
echo $f exeable
fi
[root@xuexi-001 shell]# sh file2.sh
[root@xuexi-001 shell]#
因为不可以执行,所以没有任何输出
常用案例
并且 &&
f="/tmp/aminglinux2"
[ -f $f ] && rm -f $f //前一条命令执行成功才会继续执行之后的命令
等同于下面的表达方式
if [ -f $f ]
then
rm -rf $f
fi
或者 ||
f="/tmp/aminglinux2"
[ -f $f ] || touch $f //前面命令不成功时,执行后面的命令
if [ ! -f $f ] // “!”表示了如果这条命令不成功,就往下执行
then
touch $f
fi