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

Bash脚本求和报错:expression语法错误(错误令牌为:)求助

Bash累加脚本语法错误修复

错误根源

你的脚本第3行for n in "$@":末尾多了个冒号:,这是导致语法错误的核心原因。Bash会将这个冒号当成循环列表的一部分,把每个命令行参数都拼接上冒号(比如最后一个参数7变成了7:)。当执行算术运算时,7:不是合法的整数,就会抛出syntax error in expression (error token is ":")的错误,而输出的10是前三个参数(1+2+7)的计算值。

修复后的完整脚本

将第3行的冒号删除即可,同时可以把算术运算写法优化得更简洁:

#!/bin/bash
sum=0
for n in "$@"
do
        ((sum += n))
done
echo $sum

注:((sum += n))是Bash推荐的算术运算写法,比sum=$(($sum + $n))更简洁易读。

验证执行效果

执行修复后的脚本,输入参数1 2 7 7,会得到正确的累加结果:

ubuntu@taskserver:~/var/save/Task$ ./SumAll.sh 1 2 7 7
17

额外优化建议

为了让脚本更健壮,可以添加参数合法性检查,避免传入非整数参数导致错误:

#!/bin/bash
sum=0
for n in "$@"
do
        # 检查参数是否为正整数
        if ! [[ "$n" =~ ^[0-9]+$ ]]; then
                echo "错误:参数 '$n' 不是合法整数" >&2
                exit 1
        fi
        ((sum += n))
done
echo $sum

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:30:01