为何Bash脚本输出0 0而非读取的字符串?
拆分姓名输出0的原因及修复
问题根源是误用了let命令:let是Bash的算术运算指令,仅能处理数值。当你把姓名这类非数字字符串传给let时,Bash会将其解析为0,最终导致输出两个0。
修复方案1(修正原脚本)
直接移除let,直接赋值字符串变量即可:
read fullName IFS=' ' read -ra splitName <<< "$fullName" firstName="${splitName[0]}" lastName="${splitName[1]}" echo $firstName echo $lastName
修复方案2(更简洁写法)
利用read命令的默认行为,直接将输入拆分到两个变量中,无需手动处理数组:
read firstName lastName echo $firstName echo $lastName
注:read默认会按空格(包括连续空格)拆分输入,刚好适配普通的名+姓结构。如果需要处理带空格的姓(如"Mary Ann"这类复合姓),则需要调整拆分逻辑。
内容的提问来源于stack exchange,提问作者Reid Boulet
相关产品推荐
相关产品推荐

