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

求助:Shell质数打印脚本存在语法问题,寻求修正指导

修正后的质数打印Shell脚本

先给你能正常运行的修正版脚本:

echo "enter range: "
read n
echo "prime no are:"
m=2
while [ $m -le $n ]; do
    i=2
    flag=0
    while [ $i -le `expr $m / 2` ]; do
        if [ `expr $m % $i` -eq 0 ]; then
            flag=1
            break
        fi
        i=`expr $i + 1`
    done
    if [ $flag -eq 0 ]; then
        echo $m
    fi
    m=`expr $m + 1`
done

原脚本的主要语法错误说明

  • 循环与条件语句的分隔符缺失:while [ ... ]和if [ ... ]后面必须用分号;分隔后再写do/then,或者换行单独写do/then。比如原脚本里的while [ $m -le $n ] do是错误写法,必须添加分号调整格式。
  • expr命令的空格要求:expr的操作数和运算符之间必须有空格,原脚本里的expr $m/2要写成expr $m / 2,expr $i +1要写成expr $i + 1,否则expr会把连写的字符串当成整体,无法执行算术计算。
  • 变量赋值的空格问题:Shell中变量赋值时=前后不能有空格,原脚本里的i= expr ...和m= expr ...会触发语法错误,必须去掉=后面的空格。
  • 代码结构混乱:原脚本存在多余的then语句,且done的位置错误,导致循环嵌套逻辑完全混乱,需要重新调整缩进和语句闭合位置。

内容的提问来源于stack exchange,提问作者Adarsh John Sebastian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:17:37