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

如何在Bash脚本中将格式化日期结果赋值给变量

报错原因

Shell变量赋值时,若要捕获命令的输出结果存入变量,必须使用命令替换语法。你写的mo=date --date="$(date +%Y-%m-1)-1 month" +%b不符合语法规则:Shell会将mo=date识别为「临时给变量mo赋值为date」,然后把后面的--date=...片段当成要执行的命令名,自然会抛出找不到命令的错误。

正确赋值写法

两种写法均兼容ksh环境:

  • 可读性更好的$()语法(推荐):
mo=$(date --date="$(date +%Y-%m-1) -1 month" +%b)
  • 兼容极老Shell版本的反引号语法:
mo=`date --date="$(date +%Y-%m-1) -1 month" +%b`
语法注意点
  • Shell变量赋值的=两侧不能加空格,一旦加空格,Shell会把等号前的内容识别为命令名,触发同类报错。
  • 赋值完成后可以用echo $mo验证结果,正常会输出上个月的月份缩写(比如当前为6月时输出May)。
  • 如果后续脚本需要在macOS等BSD系统运行,系统自带date命令不支持--date参数,可替换为BSD date兼容写法mo=$(date -v-1m +%b)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:00:54