Shell 入门教程(十六):如何进行文件判断

文件测试运算符用于检测文件的各种状态和属性,目前支持的运算符如下:

  • -b file:是否块设备文件
  • -c file:是否字符设别文件
  • -d file:是否目录
  • -f file:是否普通文件
  • -g file:文件是否设置了 SGID 位
  • -k file:是否设置了粘着位
  • -p file:文件是否有名管道
  • -u file:文件是否设置了 SUID 位
  • -r file:文件是否可读
  • -w file:文件是否可写
  • -x file:文件是否可执行
  • -s file:文件是否为空(文件大小是否大于0),不为空返回 true。
  • -e file:文件(包括目录)是否存在

要特别注意的是-s file判断文件是否为空时,不为空才返回true。

变量 file 表示文件 /User/chenshuyi/hello.sh,它的大小为 52 字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:

#!/bin/bash
# author:陈树义
# site:http://www.shuyi.me

file="/User/chenshuyi/hello.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
if [ -w $file ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi
if [ -x $file ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi
if [ -f $file ]
then
   echo "文件为普通文件"
else
   echo "文件为特殊文件"
fi
if [ -d $file ]
then
   echo "文件是个目录"
else
   echo "文件不是个目录"
fi
if [ -s $file ]
then
   echo "文件不为空"
else
   echo "文件为空"
fi
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi

输出结果为:

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在
posted @ 2020-11-01 11:56  陈树义  阅读(745)  评论(0编辑  收藏  举报