Shell中将现有变量值赋值给新变量时新变量返回空值问题
问题根源
你的赋值逻辑完全写反了:
Shell 中变量名+=值的语法作用是将等号右侧的内容追加到左侧变量的现有值末尾,而非把左侧变量的值赋值给右侧变量。
你写的VAR1+="$MyVar"执行时,MyVar还没有被赋值,默认是空字符串,所以这段代码只是给VAR1拼接了一个空值,全程没有给MyVar做任何赋值操作,最终输出$MyVar自然为空。
你贴的执行日志中出现VAR1=为空,大概率是执行脚本前VAR1已经被清空,拼接空值后仍然保持空。
正确实现
1. 直接将VAR1的值赋值给新变量MyVar
VAR1="Hello World" VAR2="Let's concatenate" # 正确赋值:新变量在等号左侧,待取值的变量在右侧 MyVar="$VAR1" echo "$VAR1" # 输出 Hello World echo "$MyVar" # 输出 Hello World,符合预期
2. 如需把VAR1的值追加到MyVar已有内容后
如果要实现拼接逻辑,把需要修改的变量放在+=左侧即可:
MyVar="初始内容" VAR1="Hello World" # 将VAR1的值追加到MyVar末尾 MyVar+="$VAR1" echo "$MyVar" # 输出 初始内容Hello World
内容的提问来源于stack exchange,提问作者Data Engineer
相关产品推荐
相关产品推荐

