if文件目錄屬性判斷
- if 判斷文件、目錄屬性
- [ -f file ]判斷是不是普通文件,且存在
- [ -d file ] 判斷是不是目錄,且存在
- [ -e file ] 判斷文件或目錄是否存在
- [ -r file ] 判斷文件是否可讀
- [ -w file ] 判斷文件是否可寫
- [ -x file ] 判斷文件是否可執行
文件目錄屬性判斷
[root@hf-01 shell]# vim file1.sh
[root@hf-01 shell]# cat file1.sh
#! /bin/bash
f="/tmp/hanfeng"
if [ -f $f ]
then
echo $f exist
else
touch $f
fi
[root@hf-01 shell]# sh -x file1.sh 第一次執行,會建立該文件
+ f=/tmp/hanfeng
+ '[' -f /tmp/hanfeng ']'
+ touch /tmp/hanfeng
[root@hf-01 shell]# sh -x file1.sh 第二次執行,會提示該文件已存在
+ f=/tmp/hanfeng
+ '[' -f /tmp/hanfeng ']'
+ echo /tmp/hanfeng exist
/tmp/hanfeng exist
[root@hf-01 shell]#
[root@hf-01 shell]# vim file2.sh
[root@hf-01 shell]# cat !$
cat file2.sh
#! /bin/bash
f="/tmp/hanfeng"
if [ -d $f ]
then
echo $f exist
else
mkdir $f
fi
[root@hf-01 shell]# sh -x file2.sh
+ f=/tmp/hanfeng
+ '[' -d /tmp/hanfeng ']'
+ mkdir /tmp/hanfeng
[root@hf-01 shell]#
- if 判斷文件、目錄屬性
- 目錄和文件均可以touch 的,touch的目的是 若是這個文件或目錄不存在,它會建立這個文件,若是這個文件或目錄存在了,在touch 就會更改這個文件的三個 time
[root@hf-01 shell]# vim file2.sh
[root@hf-01 shell]# sh -x file2.sh
+ f=/tmp/hanfeng
+ '[' -e /tmp/hanfeng ']'
+ echo /tmp/hanfeng exist
/tmp/hanfeng exist
[root@hf-01 shell]#
[root@hf-01 shell]# cat file2.sh
#! /bin/bash
f="/tmp/hanfeng"
if [ -r $f ]
then
echo $f readable
fi
[root@hf-01 shell]# sh file2.sh 會看到文件可讀的
/tmp/hanfeng readable
[root@hf-01 shell]#
- if 判斷文件、目錄屬性
- 去判斷是否刻度可寫,就判斷執行shell腳本的當前用戶
[root@hf-01 shell]# cat file2.sh
#! /bin/bash
f="/tmp/hanfeng"
if [ -w $f ]
then
echo $f writeable
fi
[root@hf-01 shell]# sh file2.sh
/tmp/hanfeng writeable
[root@hf-01 shell]#
[root@hf-01 shell]# cat file2.sh
#! /bin/bash
f="/tmp/hanfeng"
if [ -x $f ]
then
echo $f exeable
fi
[root@hf-01 shell]# sh file2.sh
/tmp/hanfeng exeable
經常使用案例
f="/tmp/aminglinux"
[ -f $f ] && rm -f $f //前一條命令執行成功纔會繼續執行以後的命令
等同於下面的表達方式
if [ -f $f ]
then
rm -rf $f
fi
f="/tmp/aminglinux"
[ -f $f ] || touch $f //前面命令不成功時,執行後面的命令
if [ ! -f $f ] // 「!」表示了若是這條命令不成功,就往下執行
then
touch $f
fi