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

Bash如何重新格式化存储在变量中的日期字符串

问题原因分析
  • Shell 中单引号包裹的内容会被作为纯字面量处理,内部的$变量不会被解析展开。你编写的date -d'($expdate)'实际传给date命令的参数是字符串($expdate),date无法识别该无效日期格式,就会默认返回当前系统时间。
  • 去掉单引号后参数报错的原因是,未做引号包裹的带空格变量会被Shell按内置分隔符(空格、制表符、换行符等)拆分为多个独立参数传递给date,导致日期参数解析失败。
正确写法

使用双引号包裹变量即可同时满足「变量正常解析」和「空格被保留为字符串的一部分,不会被拆分为多个参数」的需求,同时推荐使用$()替代反引号做命令替换,可读性更强且支持嵌套:

# 原获取过期日期逻辑可替换为更推荐的$()写法
expdate=$(get_expire_date.sh)
# 用双引号包裹变量传递给date -d
expdval=$(date -d "$expdate")
# 也可自定义输出格式,示例输出为 年-月-日 时:分:秒 格式
# expdval=$(date -d "$expdate" +"%Y-%m-%d %H:%M:%S")
echo $expdval

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:24:02