如果positive_number很大会有什么问题么?

来源:5-10 bash数学运算之expr(下)

慕勒3498910

2022-09-21

老师,你好。关于课上的练习题,我这边也参照老师的讲解思路,在本地,做了一下练习,具体的代码如下:

#!/bin/bash
#

while true
do
        read -p "请输入一个正整数:" num

        expr $num + 1 &> /dev/null

        if [ $? -ne 0 ]; then
                echo "输入的数字中存在小数"
                continue
        else
                is_negative=`expr $num \< 0`

                if [ $is_negative -eq 1 ]; then
                        echo "输入的数字小于0"
                        continue
                fi

                sum=0

                for(( i = 1; i <= $num; i++))
                do
                        sum=$(( sum + i ))
                done

                echo "1+2+3+...+$num=$sum" 
                
                exit
        fi
done

一般的输入条件下,输入一个较小的正整数时,也是没有什么问题的,可以进行正常计算,并输出正确的运算结果。就是,我想了解一下,SHELL中,因为没有像JAVA这类高级编程语言拥有变量类型的概念,因此,当我尝试输入一个很大的正整数时,比如:9999999999,我就想看一下会出现什么现象。我在本地的尝试结果是,脚本就一直没有输出结果,就一直让我在等待,我想了解一下,这样的情况下,脚本的运行是会进入一个什么样的运行状态呢?会是一直没法完成最终报错么?对造成对整个系统的影响么?我这边,并没有一直等待下去,而是,直接通过ctrl+c,来手动终止了脚本的运行。效果图如下:

http://img.mukewang.com/szimg/6329e79a091f6dcf06750101.jpg

写回答

1回答

酷田

2022-11-04

首先:shell作为linux原生的语言,主要用途是用于系统管理,并不适合用于这种计算;

其次:本身你这个循环需要遍历99亿次,shell是逐行解释执行的,效率会远远高于高级语言(java、c)等。

最后:倒不一定会对系统导致严重的影响,只是会非常慢,而且计算结果也不一定正确。

0
0

掌握Shell脚本编程 360架构师带你进阶Linux高手

30%知识讲解+70%实例操作 掌握Shell脚本编程能力

1638 学习 · 297 问题

查看课程