Shell 中 if -s 含义
在 Shell 脚本 中,-s 是 文件测试运算符,用于判断文件是否存在且大小大于零(即非空文件)。它常与 if 条件语句配合使用,用来在脚本中进行文件状态检测。
语法:
if [ -s 文件路径 ]; then
# 文件存在且非空时执行的命令
else
# 文件不存在或为空时执行的命令
fi
示例:
#!/bin/bash
file="/tmp/test.txt"
if [ -s "$file" ]; then
echo "文件存在且非空"
else
echo "文件不存在或为空"
fi
执行逻辑:
-
如果 /tmp/test.txt 存在且文件大小 > 0 字节,则输出 文件存在且非空。
-
否则输出 文件不存在或为空。
常见文件测试运算符对比(便于理解 -s):
-
-e file:文件存在
-
-f file:文件存在且是普通文件
-
-d file:文件存在且是目录
-
-r file:文件可读
-
-w file:文件可写
-
-s file:文件存在且大小大于零
实际应用场景:
-
日志检测:判断日志文件是否有内容再进行分析。
-
缓存文件验证:避免读取空文件导致错误。
-
条件执行:根据文件是否为空决定是否执行后续任务。
示例:日志分析前检查
logfile="/var/log/app.log"
if [ -s "$logfile" ]; then
grep "ERROR" "$logfile"
else
echo "日志文件为空或不存在"
fi
✅ 总结: if -s 是 Shell 中非常实用的文件检测方式,能有效避免对空文件或不存在文件的无效操作,提高脚本的健壮性与安全性。

浙公网安备 33010602011771号