shell脚本之文件操作

文件测试运算符

文件测试运算符用于检测 Unix 文件的各种属性。

下面最常用的是 -f 参数 来检查是否是文件

#!/bin/bash
#start nginx php-fpm
list1="php-fpm7.0 nginx"

for proc in $list1
do
    echo start...$proc
    if [ -f $proc ]
    then
        ./$proc
    else
        $proc
    fi  
    sleep 0.1 
done

 

-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。

属性检测描述如下:

操作符说明举例
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。

 示例:

#!/bin/bash
. ./main.sh #include extern file
echo "------------------example file test----------------------"
url="http://www.baidu.com"
echo "print file.sh var  url=$url"
file="./a.out"
#check file info message
#-b check file is block device
if [ -b "/dev/random" ]
then
    echo "/dev/random is block device file"
fi
#-c check file is char device
ls -l /dev/zero
if [ -c /dev/zero ]
then
    echo "/dev/zero file is char device "
else
    echo "/dev/zero file is not char device"
fi
#-f check file is  normal file -f; file that not block file and not char device file
if [ -f /home/daokr/myfile/main.c ]
then 
    echo "main.c is normal file"
fi
#-d check file is directroy
if [ -d /dev/zero ]
then
    echo "/dev/zero is directory"
else
    echo "/dev/zero is not directroy"
fi
#-s check file is empty if not empty return true
if [ -s /home/daokr/myfile/main.c ]
then 
    echo "/home/daokr/myfile/main.c is not empty"
else
    echo "/home/daokr/myfile/main.c is empty"
fi
#-e check file is exist if not exist return false
if [ -e /home/daokr/myfile/a.c ]
then
    echo "a.c file is exist"
else
    echo "a.c file not exist"
fi
#-rwx check file is read write and exe
if [ -r /home/daokr/myfile/main.c ]
then
    echo "main.c file is allow read"
else
    echo "main.c file is  not allow read"
fi
#-w check main.sh file is writeable
if [ -w ./main.sh ]
then
    echo "main.sh is writeable"
else
    echo "main.sh not write"
fi
#-x check main.sh file is execute
if [ -x ./main.sh ]
then 
    echo "main.sh is allow execute"
else
    echo "main.sh is not allow execute"
fi

 

posted @ 2018-03-30 14:08  王默默  阅读(665)  评论(0编辑  收藏  举报