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

 

转载于:https://www.cnblogs.com/wanglijun/p/8675858.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值