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

为何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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:34:50