- Unix / Linux 初学者
- Unix / Linux - 主页
- Unix / Linux - 入门
- Unix / Linux - 文件管理
- Unix / Linux - 目录
- Unix / Linux - 文件权限
- Unix / Linux - 环境
- Unix / Linux - 基本实用程序
- Unix / Linux - 管道和过滤器
- Unix / Linux - 进程
- Unix / Linux - 通信
- Unix / Linux - vi 编辑器
- Unix/Linux Shell 编程
- Unix / Linux - Shell 脚本
- Unix / Linux - 什么是 Shell?
- Unix / Linux - 使用变量
- Unix / Linux - 特殊变量
- Unix / Linux - 使用数组
- Unix / Linux - 基本运算符
- Unix / Linux - 决策
- Unix / Linux - Shell 循环
- Unix / Linux - 循环控制
- Unix / Linux - Shell 替换
- Unix / Linux - 引用机制
- Unix / Linux - IO 重定向
- Unix / Linux - Shell 函数
- Unix / Linux - 联机帮助页
Unix / Linux - Shell 文件测试操作符示例
我们有一些运算符可用于测试与 Unix 文件相关的各种属性。
假设变量文件保存现有文件名“test”,其大小为 100 字节,并且具有读取、写入和执行权限 -
操作员 | 描述 | 例子 |
---|---|---|
-b 文件 | 检查文件是否是块特殊文件;如果是,则条件成立。 | [ -b $file ] 是错误的。 |
-c 文件 | 检查文件是否为字符特殊文件;如果是,则条件成立。 | [ -c $file ] 是错误的。 |
-d 文件 | 检查文件是否是目录;如果是,则条件成立。 | [ -d $file ] 不正确。 |
-f 文件 | 检查文件是否是普通文件而不是目录或特殊文件;如果是,则条件成立。 | [ -f $file ] 为真。 |
-g 文件 | 检查文件是否设置了其组 ID (SGID) 位;如果是,则条件成立。 | [ -g $file ] 是错误的。 |
-k 文件 | 检查文件是否设置了粘滞位;如果是,则条件成立。 | [ -k $file ] 为假。 |
-p 文件 | 检查文件是否是命名管道;如果是,则条件成立。 | [ -p $file ] 是错误的。 |
-t 文件 | 检查文件描述符是否打开并与终端关联;如果是,则条件成立。 | [ -t $file ] 为假。 |
-u 文件 | 检查文件是否已设置其设置用户 ID (SUID) 位;如果是,则条件成立。 | [ -u $file ] 是错误的。 |
-r 文件 | 检查文件是否可读;如果是,则条件成立。 | [ -r $file ] 为真。 |
-w 文件 | 检查文件是否可写;如果是,则条件成立。 | [ -w $file ] 是正确的。 |
-x 文件 | 检查文件是否可执行;如果是,则条件成立。 | [ -x $file ] 为真。 |
-s 文件 | 检查文件大小是否大于 0;如果是,则条件成立。 | [ -s $file ] 是正确的。 |
-e 文件 | 检查文件是否存在;即使 file 是一个目录但存在,也是如此。 | [ -e $file ] 为真。 |
例子
以下示例使用所有文件测试运算符 -
假设变量文件保存现有文件名“/var/www/tutorialspoint/unix/test.sh”,其大小为 100 字节,并且具有读、写和执行权限 -
#!/bin/sh file="/var/www/tutorialspoint/unix/test.sh" if [ -r $file ] then echo "File has read access" else echo "File does not have read access" fi if [ -w $file ] then echo "File has write permission" else echo "File does not have write permission" fi if [ -x $file ] then echo "File has execute permission" else echo "File does not have execute permission" fi if [ -f $file ] then echo "File is an ordinary file" else echo "This is sepcial file" fi if [ -d $file ] then echo "File is a directory" else echo "This is not a directory" fi if [ -s $file ] then echo "File size is not zero" else echo "File size is zero" fi if [ -e $file ] then echo "File exists" else echo "File does not exist" fi
上面的脚本将产生以下结果 -
File does not have write permission File does not have execute permission This is sepcial file This is not a directory File size is not zero File does not exist
使用文件测试运算符时需要考虑以下几点 -
运算符和表达式之间必须有空格。例如,2+2是不正确的;应该写成2+2。
if...then...else...fi语句是一个决策语句,在下一章中已经解释过。
unix-basic-operators.htm