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

UNIX中替换变量为字符串截取逻辑时date命令报错求助

问题排查:UNIX脚本中date命令报错"extra operand '+%s'"

场景描述

在UNIX环境中运行以下脚本时一切正常,能正确输出目标时间格式:

UOW="20251013115437"
echo ${UOW}
UOW_STR=${UOW:0:4}"-"${UOW:4:2}"-"${UOW:6:2}" "${UOW:8:2}":"${UOW:10:2}":"${UOW:12:2}
echo ${UOW_STR}
UOW_IN_AFTERVAL=$(printf '%(%FT%T%z)T\n' $(TZ=UTC date -d "${UOW_STR}" +%s))
echo ${UOW_IN_AFTERVAL}

输出结果:2025-10-13T07:54:37-0400

但将语句中的UOW_STR直接替换为字符串截取逻辑后,脚本报错:

UOW_IN_AFTERVAL=$(printf '%(%FT%T%z)T\n' $(TZ=UTC date -d "${UOW:0:4}/"-/"${UOW:4:2}/"-/"${UOW:6:2}/" /"${UOW:8:2}/":/"${UOW:10:2}/":/"${UOW:12:2}" +%s))

错误信息:

date: extra operand ‘+%s’

错误原因

字符串拼接语法存在严重错误:

  • 多余的斜杠/和错误的引号嵌套,导致date命令的日期参数被拆分成多个独立片段
  • 原本应作为整体的日期字符串被拆成多个参数,+%s因此被当成date命令的额外操作数,而非格式化选项

解决方案

修正字符串拼接逻辑,直接用正确字符连接截取片段,移除多余的斜杠和错误引号:

UOW="20251013115437"
UOW_IN_AFTERVAL=$(printf '%(%FT%T%z)T\n' $(TZ=UTC date -d "${UOW:0:4}-${UOW:4:2}-${UOW:6:2} ${UOW:8:2}:${UOW:10:2}:${UOW:12:2}" +%s))
echo ${UOW_IN_AFTERVAL}

验证结果

运行修正后的脚本,会正确输出:2025-10-13T07:54:37-0400

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 05:12:11