Linux test命令详解

test 是 Linux 和 Unix 系统中一个用于评估条件表达式的核心命令,在 Shell 脚本编程中不可或缺。它不产生直接输出,而是通过**退出状态码(**Exit Status ) 来悄无声息地告诉你结果是"真"还是"假",脚本的核心逻辑(if, while, until)都依赖于此。

💡 最简洁:命令行直接测试

在 -a 和 -o 等逻辑运算符被建议避免使用的情况下,最推荐的方式是使用 Shell 的 && (逻辑与) 和 || (逻辑或) 操作符:

bash

复制代码
#标准写法:使用\&\&进行逻辑与
复制代码
[ -d /etc ] && echo "/etc 是一个目录"
复制代码
#标准写法:使用\|\|进行逻辑或
复制代码
[ -f /etc/passwd ] || echo "/etc/passwd 不是一个普通文件"

你还可以立即通过 $? 变量查看刚才命令的退出码,其中 0 表示"真",1 表示"假":

bash

复制代码
#测试0是否等于0,结果为真
复制代码
test 0 -eq 0; echo $?
复制代码
#输出0
复制代码
复制代码
#测试文件是否存在,结果为假
复制代码
test -e /path/to/nonexistent_file; echo $?
复制代码
#输出1

⚙️ 核心功能分类

test 能测试文件属性、字符串和数值,其丰富选项是强大功能的核心。

1. 文件测试
这些选项用于检查文件的存在性、类型和权限。

选项 说明
-e FILE 文件存在。
-f FILE 存在且为普通文件。
-d FILE 存在且为目录。
-L FILE / -h FILE 存在且为软链接。
-s FILE 存在且大小非 0 (非空)。
-r FILE / -w FILE / -x FILE 存在且可读 /可写 /可执行。
FILE1 -nt FILE2 FILE1 比 FILE2 新 (修改时间)。
FILE1 -ot FILE2 FILE1 比 FILE2 旧。

2. 字符串测试
用于比较字符串内容或检查其是否为空。

运算符 说明
-z STRING STRING 的长度为零 (空字符串)。
-n STRING STRING 的长度非零 (非空字符串)。
STRING1 = STRING2 STRING1 等于 STRING2。
STRING1 != STRING2 STRING1 不等于 STRING2。
STRING1 < STRING2 / STRING1 > STRING2 按字典序比较(在 [ ] 中需用 < > 转义)。
相关推荐
wdfk_prog几秒前
Wi-Fi Direct教程 01:在 Ubuntu 搭建双 mac80211_hwsim + wpa_supplicant 2.12
linux·运维·服务器·ubuntu·ros·wifi-direct
fengkai454525 分钟前
十一、MySQL 第 1‑3 章
运维·数据库·mysql
wusam26 分钟前
计算机网络第二章习题解答
服务器·网络·计算机网络
EasyGBS32 分钟前
国标监控PS流是什么?GB28181视频平台EasyGBS视频封装全链路讲解
服务器·音视频·gb28181
Vcaker1 小时前
Linux学习36-k8s集群升级及kube-vip高可用
linux·运维·学习
土星云SaturnCloud1 小时前
边缘计算 + AI 视频存管一体机:快递末端网点分拣提效与安全管控实战方案
服务器·人工智能·ai·边缘计算
wdfk_prog1 小时前
Wi-Fi Direct教程 02:从 wpa_cli main() 到 P2P_FIND——用源码注释追踪 CLI 控制命令发送
运维·服务器·网络·网络协议·ubuntu·p2p·wifi-direct
DD云验证1 小时前
DD云验证,免费网络验证系统
服务器·python·易语言·网络验证·卡密验证
skywalk81631 小时前
Deepseek harness的4种模式 配置文件内容
linux·人工智能·ubuntu·deepseek·harness
HRTOS2 小时前
HRTOS Shell继续完善:优化printf缓冲区与字符串越界保护,国庆后随新版本更新
运维·单片机·嵌入式硬件·算法·51单片机