You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本的比较运算符中实现日期大小判断

Bash中用-ge/-lt比较文件修改日期的方法

直接用date -r输出的人类可读日期字符串,没法用-ge/-lt这类数值比较运算符做判断——因为它们是文本格式,无法进行数值对比。你需要把日期转换成Unix时间戳(从1970年1月1日00:00:00 UTC到目标时间的总秒数),这样变量存储的是整数,就能正常用数值比较符了。

步骤1:获取文件修改时间的时间戳

修改你的变量赋值代码,用date命令的+%s参数输出时间戳:

# 读取文件修改时间并转为Unix时间戳
starttimestamp=$(date -r log.txt +%s)
endtimestamp=$(date -r logfiletest.txt +%s)

注:用$(...)代替反引号是更现代、可读性更好的写法,功能和反引号一致。

步骤2:在IF语句中使用数值比较符

现在可以用-lt(小于)、-ge(大于等于)、-eq(等于)等运算符做判断了,示例代码:

# 判断log.txt的修改时间是否早于logfiletest.txt
if [ $starttimestamp -lt $endtimestamp ]; then
    echo "log.txt 修改时间更早"
fi

# 判断log.txt的修改时间是否晚于或等于logfiletest.txt
if [ $starttimestamp -ge $endtimestamp ]; then
    echo "log.txt 修改时间更晚或相同"
fi

验证时间戳(可选)

如果想确认时间戳对应的原始日期,可以用以下命令转换回去:

date -d @$starttimestamp
date -d @$endtimestamp

内容的提问来源于stack exchange,提问作者jssteele89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:05:11