Linux系统下计算100以内偶数和的shell脚本while循环条件如何设置
Shell脚本计算1-100偶数总和问题修正
你的代码存在两处核心问题:
- 逻辑冗余:你已经通过外层for循环遍历了所有100以内的偶数,完全不需要嵌套while循环做累加,强行加的话要么判断条件永远为真导致死循环,要么完全没有实际作用
- 语法错误:
[[$n 0]]写法不符合bash判断语法,[[后和]]前必须留空格,同时缺少对应的判断运算符sum=expr sum + $n`` 中等号后不能有空格,expr里取sum变量值需要加$符
如果你坚持要使用while循环实现,可以直接把遍历逻辑换成while,不需要嵌套for循环,正确代码如下:
#!/bin/bash sum=0 n=2 # while循环判断条件:n小于等于100时就继续执行 while [ $n -le 100 ] do echo $n sum=$(expr $sum + $n) # 每次循环n自增2,取到下一个偶数 n=$((n+2)) done echo "sum is $sum "
如果你还是想保留原来的for循环打印偶数的逻辑,直接去掉多余的while循环即可,修正后的代码如下:
#!/bin/bash sum=0 for((n=2;n<=100;n=n+2)) do echo $n sum=$(($sum + $n)) done echo "sum is $sum "
补充说明:实际场景中更推荐用
$((算术运算))替代expr,不需要额外调用子进程,执行效率更高。
内容的提问来源于stack exchange,提问作者Sayyed Mustafa
相关产品推荐
相关产品推荐

