if判断目录 linux,20.6 if文件目录属性判断

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值