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:文件存在且大小大于零

实际应用场景:

  1. 日志检测:判断日志文件是否有内容再进行分析。

  2. 缓存文件验证:避免读取空文件导致错误。

  3. 条件执行:根据文件是否为空决定是否执行后续任务。

示例:日志分析前检查

logfile="/var/log/app.log"

if [ -s "$logfile" ]; then
grep "ERROR" "$logfile"
else
echo "日志文件为空或不存在"
fi

✅ 总结: if -s 是 Shell 中非常实用的文件检测方式,能有效避免对空文件或不存在文件的无效操作,提高脚本的健壮性与安全性。

posted @ 2026-03-06 09:33  宁九才  阅读(5)  评论(0)    收藏  举报