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

Unix下如何在echo语句中加入月份?脚本变量失效问题求助

问题解决:Shell脚本中date命令获取月份变量失效的问题

错误原因

你脚本里的变量赋值存在两处语法问题:

  • 变量赋值时等号两边不能有空格,原写法icmonth= date +"%m"会被Shell解析为执行date +"%m"命令,同时设置临时空变量icmonth,导致最终icmonth实际为空。
  • 要捕获命令的输出并赋值给变量,必须使用命令替换语法,即用$(command)或反引号`command`包裹目标命令。

修正后的脚本

a='boy'
icmonth=$(date +"%m") # 用$()捕获date命令输出,等号两侧无空格
for((i=1;i<=31;i++))
do
echo "$a$icmonth$i"
done

关键说明

  • $(date +"%m")会执行date +"%m"命令,获取当前月份的两位数字格式结果(如09),并将其赋值给icmonth变量。
  • 若使用较旧Shell环境,也可以用反引号写法:icmonth=date +"%m"``,但推荐用$(),可读性更强且支持命令嵌套。

验证效果

执行修正后的脚本,会输出符合预期的内容:

boy091
boy092
boy093
...
boy0931

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:13:18