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

如何在Shell脚本中获取当前及下一月?现有命令仅显示当月求排查

排查Shell脚本获取当前月和下一月的命令问题

我来帮你梳理下你遇到的问题,你的命令确实存在几个小问题,导致始终只显示当前月份:

1. 第一条命令的问题

你输入的 date '+%b' mar 里,mar 是多余的无效参数——date 命令会直接忽略掉非选项类的额外参数,所以这条命令本质上和 date '+%b' 完全一样,只会输出当前月份的缩写。

2. 第二条命令的潜在问题

你写的 date +"%B %Y" --date="$(date +%Y-%m-15) next month",如果是在**Linux系统(使用GNU Date)下,理论上逻辑是对的,但其实可以简化成 date +"%B %Y" --date="next month" 或者 date +"%B %Y" --date="+1 month",效果是一样的。但如果你是在macOS系统(使用BSD Date)**下,--date 参数是不被支持的,这时候这条命令会被识别为无效参数,依然输出当前月份的信息。

给你两种环境下的正确写法

针对GNU Date(Linux系统)

  • 获取当前月份缩写:date '+%b'
  • 获取当前月份完整名称+年份:date '+%B %Y'
  • 获取下一月的完整名称+年份:date +"%B %Y" --date="next month"
    (即使当前是12月,也会自动输出次年1月的信息,无需额外处理)

针对BSD Date(macOS系统)

  • 获取当前月份缩写:date '+%b'
  • 获取当前月份完整名称+年份:date '+%B %Y'
  • 获取下一月的完整名称+年份:date -v +1m +"%B %Y"

一次性获取当前月和下一月的脚本示例

如果需要在脚本里同时获取两个月份的信息,可以用这段代码:

GNU环境(Linux)

current_month=$(date '+%B %Y')
next_month=$(date +"%B %Y" --date="next month")
echo "当前月份: $current_month"
echo "下一个月: $next_month"

BSD环境(macOS)

current_month=$(date '+%B %Y')
next_month=$(date -v +1m +"%B %Y")
echo "当前月份: $current_month"
echo "下一个月: $next_month"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:04:41