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

如何在 Shell 脚本中判断文件是否存在且可读?

在 Shell 脚本中判断文件是否存在且可读,推荐直接使用测试运算符 -r,因为它隐含了文件存在的前提,配合规范的变量引用可以避免大多数路径错误。

先说结论:优先使用 [ -r "文件路径" ] 语法,既简洁又能同时覆盖存在性与权限检查。

  • 适合:所有 POSIX 兼容的 Shell 环境,包括 Bash、Sh、Zsh。
  • 先看:文件权限模型中“可读”位是否对当前用户开放。
  • 建议:变量务必加双引号,防止路径含空格时脚本报错。

命令速用版

if [ -r "/path/to/file" ]; thenecho "文件存在且可读"
elseecho "文件不存在或不可读"
fi

为什么会这样

Linux 文件权限分为读、写、执行三类。测试运算符 -r 不仅检查文件是否存在,还检查当前运行脚本的用户是否有读取权限。如果文件不存在,-r 也会返回假,所以单独使用 -r 通常就够了,不需要额外加 -e

分步处理

1. 定义文件路径变量,记得加双引号。

FILE_PATH="/var/log/myapp.log"

2. 在条件判断中使用 -r 测试。

if [ -r "$FILE_PATH" ]; then# 执行读取操作cat "$FILE_PATH"
fi

3. 如果需要区分“不存在”和“存在但不可读”,可以嵌套判断。

if [ ! -e "$FILE_PATH" ]; thenecho "文件不存在"
elif [ ! -r "$FILE_PATH" ]; thenecho "文件存在但不可读"
fi

怎么验证是否生效

1. 创建一个测试文件:touch /tmp/testfile

2. 移除读权限:chmod 000 /tmp/testfile

3. 运行脚本,观察是否进入 else 分支。

4. 恢复权限:chmod 644 /tmp/testfile,再次运行确认恢复。

常见坑

  • 变量未加引号:如果路径包含空格,[ -r $FILE ] 会被拆分成多个参数导致语法错误。
  • Root 用户特权:Root 用户通常可以绕过读权限限制,-r 对 Root 可能始终返回真,即使权限位显示不可读。
  • 符号链接-r 检查的是链接指向的目标文件权限,如果目标被删除,判断会失败。

参考来源

  • GNU Bash Manual, Section: Bash Conditional Expressions, URL: https://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html
  • The Open Group Base Specifications Issue 7, POSIX Shell Command Language, URL: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09

原文链接:https://www.zjcp.cc/ask/10978.html

http://www.jsqmd.com/news/807221/

相关文章:

  • iM群发虚拟机在跨境TikTok运营中的应用价值
  • 2025-2026年北京老房改造装修公司推荐:五家排行产品专业评测解决空间局促致收纳难 - 品牌推荐
  • Deep Lake:统一多模态AI数据存储与向量检索的实践指南
  • 2025-2026年国内抛丸机厂家推荐:五大排行产品专业评测应对大型工件清理疲劳 - 品牌推荐
  • 收藏!小白_程序员速藏:华为交换机30条核心常用命令 按场景分类轻松入门
  • 如何选广州除甲醛公司?2026年5月推荐五家公司评测办公室装修不留异味对比 - 品牌推荐
  • 监控视角下校园操场异常行为打架跌倒危险行为检测数据集VOC+YOLO格式1433张3类别
  • 2026年5月棋牌室麻将机推荐:五大品牌排名专业评测夜场防噪音扰民方案 - 品牌推荐
  • 期末弯道超车:课程论文别硬写!虎贲等考 AI 让你轻松拿高分
  • SLMs在代码重构错误检测中的技术优势与实践
  • 页面并发请求过多如何通过请求合并优化性能?
  • 为AI应用构建规则引擎:基于MCP协议的数据校验服务器实践
  • 哪家抛丸机厂家技术强?2026年5月推荐五大品牌评测案例综合评价钢结构锈蚀痛点 - 品牌推荐
  • 哪家棋牌室麻将机专业?2026年5月推荐五款产品棋牌室运营效率案例评测与评价 - 品牌推荐
  • 如何选北京老房改造装修公司?2026年5月推荐五家产品评测采光差致空间压抑对比 - 品牌推荐
  • 2026年5月广州除甲醛公司推荐:五大品牌榜专业评测夜间入住防反弹 - 品牌推荐
  • Claude Code Plan Mode 计划模式全解析:先规划后执行、审批流、计划文件、Auto Mode、多 Agent 协同
  • Mac NTFS读写终极解决方案:3分钟告别跨平台文件传输困扰
  • 2026年5月十大沐浴露品牌推荐:专业评测排名榜夜洗防干痒 - 品牌推荐
  • iOS模拟器自动化管理:ios-simulator-skill工具详解与CI/CD实战
  • 2026年5月国际十大物流公司排行榜推荐:专业评测夜班货运防时效延误 - 品牌推荐
  • STM32单片机学习(8)——GPIO通用输出
  • 如何判断关键词优化方法是否适合中小企业?
  • AI 写论文哪个软件最好?2026 实测:真文献 + 实证图表 + 全流程合规,虎贲等考 AI 登顶毕业论文首选
  • PP 蜂窝板挤出成型核心原理与关键设备解析
  • 2026年5月主流电竞鼠标品牌十大排行榜推荐:十大品牌专业评测夜战防手酸 - 品牌推荐
  • 2025-2026年国际十大物流公司排行榜推荐:专业评测跨境仓储清关案例与注意事项 - 品牌推荐
  • 差分电源与接地设计:从地环路事故看硬件安全设计要点
  • 2025-2026年国际十大物流公司排行榜推荐:十大专业评测工厂出海应对港口拥堵案例 - 品牌推荐
  • 2026年主流地图API AI功能开发与零代码工具横评