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

Bash字符串拼接时部分内容丢失的原因咨询

Bash字符串拼接时部分内容丢失的原因咨询

嗨,你这是踩了Bash变量名解析规则的小坑啦,咱们一步步拆解来搞懂原因:

首先,Bash里的变量名允许包含字母、数字和下划线(_),当你写$iDate_$iTime的时候,Bash会把iDate_当成一个完整的变量名来解析——但你之前根本没定义过名为iDate_的变量,所以它展开后就是空字符串,最后自然就只剩下$iTime的值1510了。

对照你的代码具体看:

iDate='2023-10-14'
iTime='1510'
# 错误写法:Bash会识别变量名为iDate_,而非iDate
iDate="$iDate_$iTime"
echo $iDate  # 输出:1510

而你改成iDate="$iDate"_"$iTime"后能得到正确结果,是因为你把变量iDate、普通字符_、变量iTime明确拆分开了,Bash能清晰识别每个部分的边界,自然就拼接出了你想要的2023-10-14_1510。

另外还有个更通用的写法,用大括号把变量名括起来,也能彻底避免这种歧义,比如:

iDate="${iDate}_${iTime}"
echo $iDate  # 输出:2023-10-14_1510

这种写法在变量后面紧跟其他字符(比如下划线、数字)时特别实用,能明确告诉Bash变量名的起止位置。

备注:内容来源于stack exchange,提问作者Ram Sambamurthy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 10:43:05