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

Bash中如何正确比较当前日期与指定未来日期的大小

错误原因

  • 变量定义错误:你定义curr_date时等号两侧加了空格,shell会将其识别为命令而非变量赋值,直接报错。
  • 变量名引用错误:你存储当前日期字符串的变量是curr_date,但转换时间戳时写的是不存在的$dat,自然无法获取正确值。
  • 未给含空格的变量加双引号:日期字符串中包含空格,不加双引号的情况下shell会将其拆分为多个独立参数传递给date命令,导致参数解析失败。

方式1:按照你的现有逻辑修改(先存日期字符串再转时间戳

先修正curr_date的定义,再正确定义now变量:

# 修正变量定义,等号两侧不能有空格
curr_date=$(date '+%F %H:%M:%S')
# 给变量加双引号传递给date命令
now=$(date -d "$curr_date" +%s)

方式2:更简化的写法(无需中转日期字符串)

如果你的目的只是获取当前时间的时间戳做对比,不需要先转成日期字符串再转回来,直接一步获取即可:

now=$(date +%s)

补充:if判断的优化建议

后续的判断逻辑建议给变量加上双引号,避免变量为空时出现语法错误:

if [ "$now" -ge "$todate" ]; then
  # 你的逻辑代码
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:24:00