当前位置: 首页 > news >正文

【shell】Shell脚本中的if判断条件和文件测试操作符

👻创作者:丶重明
👻创作时间:2025年8月30日
👻擅长领域:运维

目录

    • -e:检查文件或目录是否存在
    • -d:检查路径是否为一个目录
    • -f:检查路径是否为一个常规文件
    • -r、-w、-x:检查文件的读写执行权限
    • -s:检查文件是否存在且非空
    • -z:用于检查字符串是否为空

在Shell脚本中,if 语句是最常用的条件判断结构之一,在实际应用中,我们常常需要检查文件的存在与属性,例如是否是目录、是否是普通文件、是否可读可写等。

Shell 提供了一系列的文件测试操作符,帮助我们轻松实现这些判断。


-e:检查文件或目录是否存在
-d:检查路径是否为目录
-f:检查路径是否为常规文件
-r:检查文件是否可读
-w:检查文件是否可写
-x:检查文件是否可执行
-s:检查文件是否存在且非空
-z:检查字符串是否为空
-n:检查字符串是否非空
!:用于反转测试结果


-e:检查文件或目录是否存在

-e 操作符用于检查指定的文件或目录是否存在。

它是最基本的文件测试操作符,适用于所有类型的文件和目录。

if [ -e /path/to/file ]; thenecho "文件或目录存在"
elseecho "文件或目录不存在"
fi

-d:检查路径是否为一个目录

-d 操作符用于检查指定路径是否是一个目录。

如果路径是目录,则返回 true,否则返回 false。

if [ -d "/data" ]; thenecho "已经存在"
elsemkdir /dataecho "/data 目录已创建"
fi

-f:检查路径是否为一个常规文件

-f 操作符用于检查指定路径是否是一个常规文件(普通文件)。

它不会检查符号链接、设备文件等其他特殊文件类型。

if [ -f "/data/file.txt" ]; thenecho "文件已存在"
elsetouch /data/file.txtecho "文件已创建"
fi

-r、-w、-x:检查文件的读写执行权限

-r、-w、-x用于检查文件是否具有读写执行权限

FILE="/data/test.sh"
if [ -x "$FILE" ]; thenecho "$FILE 可执行"
elseecho "$FILE 不可执行"
fi

-s:检查文件是否存在且非空

-s 操作符用于检查文件是否存在并且大小大于0。

如果文件存在且非空,则返回 true,否则返回 false。

FILE="test.txt"# 判断文件是否存在
if [ -e "$FILE" ]; then# 文件存在,判断是否为空if [ -s "$FILE" ]; thenecho "$FILE 存在且非空"elseecho "$FILE 存在但为空,正在删除..."rm "$FILE"  # 删除空文件fi
elseecho "$FILE 不存在"
fi

-z:用于检查字符串是否为空

-z 用于检查字符串是否为空(长度为0)。

text=""# 判断字符串是否为空
if [ -z "$text" ]; thenecho "字符串为空"
elseecho "字符串不为空"
fi
http://www.dtcms.com/a/358669.html

相关文章:

  • “人工智能+”政策驱动下的技术重构、商业变革与实践路径研究 ——基于国务院《关于深入实施“人工智能+”行动的意见》的深度解读
  • STM32的内存分配与堆栈
  • Redis 测试:过期 key 内存释放情况
  • JVM架构图是怎样的?
  • 算法(④KMP)
  • SpringAI应用开发工程师高阶面试剧本与知识点全解析(含RAG、多租户、流式推理、企业落地场景)
  • Python3 lambda(匿名函数)
  • HBase高效并发锁:IdLock极简内存设计
  • Qt QML注册全局对象并调用其函数和属性
  • 银河麒麟Kylin系统编译安装Qt5.12.12
  • Yolov8损失函数:回顾Yolov8-Loss
  • ​导游|基于SprinBoot+vue的在线预约导游系统
  • DrissionPage 实战:高效爬取网页数据并保存为 CSV 的全流程解析
  • (链表)Leetcode206链表反转+Leetcode6删除链表的倒数第N个结点+虚拟头节点使用
  • Linux 笔记 Day01|课程结构
  • 第三弹、AI、LLM大模型是什么?
  • 深度学习重塑医疗:四大创新应用开启健康新纪元
  • MySQL-事务(上)
  • 【Linux】如何使用 Xshell 登录 Linux 操作系统
  • Linux 下 Docker 容器部署指南(Java + Redis 示例)
  • ⭐CVPR2025 自动驾驶半监督 LiDAR 分割新范式:HiLoTs 框架深度解析
  • 设置word引用zotero中的参考文献的格式为中文引用格式或中英文格式
  • Shell编程核心入门:参数传递、运算符与流程控制全解析
  • SEO关键词布局总踩坑?用腾讯云AI工具从核心词到长尾词一键生成(附青少年英语培训实操案例)
  • [吾爱原创] 千千每日计划
  • Java全栈工程师面试实录:从基础到微服务的全面技术解析
  • 系统架构设计师选择题精讲与解题技巧
  • Spring Boot 自动配置原理深度解析:从启动流程到监听机制
  • 学习Python中Selenium模块的基本用法(10:浏览器操作)
  • 【物联网】BLE Fundamentals 核心概念总结-广告-读写特征-LED控制-传感器通知-上下游通信过程