Shell脚本编程中常用的数学运算实例

这部分主要讨论数学相关的shell脚本编程。

加法运算

新建一个文件“Addition.sh”,输入下面的内容并赋予其可执行的权限。

#!/bin/bash

echo “Enter the First Number: ”

read a

echo “Enter the Second Number: ”

read b

x=$(expr "$a" + "$b")

echo $a + $b = $x

输出结果:

[root@tecmint ~]# vi Additions.sh

[root@tecmint ~]# chmod 755 Additions.sh

[root@tecmint ~]# ./Additions.sh

 

“Enter the First Number: ”

12

“Enter the Second Number: ”

13

12 + 13 = 25

减法运算


#!/bin/bash

echo “Enter the First Number: ”

read a

echo “Enter the Second Number: ”

read b

x=$(($a - $b))

echo $a - $b = $x

注意:这里我们没有像上面的例子中使用“expr”来执行数学运算。

输出结果:


[root@tecmint ~]# vi Substraction.sh

[root@tecmint ~]# chmod 755 Substraction.sh

[root@tecmint ~]# ./Substraction.sh

 

“Enter the First Number: ”

13

“Enter the Second Number: ”

20

13 - 20 = -7

乘法运算


#!/bin/bash

echo “Enter the First Number: ”

read a

echo “Enter the Second Number: ”

read b

echo "$a * $b = $(expr $a \* $b)"

输出结果:

[root@tecmint ~]# vi Multiplication.sh

[root@tecmint ~]# chmod 755 Multiplication.sh

[root@tecmint ~]# ./Multiplication.sh

 

“Enter the First Number: ”

11

“Enter the Second Number: ”

11

11 * 11 = 12

除法运算


#!/bin/bash

echo “Enter the First Number: ”

read a

echo “Enter the Second Number: ”

read b

echo "$a / $b = $(expr $a / $b)"

输出结果:

[root@tecmint ~]# vi Division.sh

[root@tecmint ~]# chmod 755 Division.sh

[root@tecmint ~]# ./Division.sh

 

“Enter the First Number: ”

12

“Enter the Second Number: ”

3

12 / 3 = 4

数组

下面的这个脚本可以打印一组数字。


#!/bin/bash

echo “Enter The Number upto which you want to Print Table: ”

read n

i=1

while [ $i -ne 10 ]

do

i=$(expr $i + 1)

table=$(expr $i \* $n)

echo $table

done

输出结果:

[root@tecmint ~]# vi Table.sh

[root@tecmint ~]# chmod 755 Table.sh

[root@tecmint ~]# ./Table.sh

 

“Enter The Number upto which you want to Print Table: ”

29

58

87

116

145

174

203

232

261

290

你可以从这里下载这个例子的代码

判断奇偶数


#!/bin/bash

echo "Enter The Number"

read n

num=$(expr $n % 2)

if [ $num -eq 0 ]

then

echo "is a Even Number"

else

echo "is a Odd Number"

fi

输出结果:

[root@tecmint ~]# vi EvenOdd.sh

[root@tecmint ~]# chmod 755 EvenOdd.sh

[root@tecmint ~]# ./EvenOdd.sh

 

Enter The Number

12

is a Even Number

1

2

3

4

5

[root@tecmint ~]# ./EvenOdd.sh

 

Enter The Number

11

is a Odd Number

Factorial数


#!/bin/bash

echo "Enter The Number"

read a

fact=1

while [ $a -ne 0 ]

do

fact=$(expr $fact \* $a)

a=$(expr $a - 1)

done

echo $fact

输出结果:
[root@tecmint ~]# vi Factorial.sh

[root@tecmint ~]# chmod 755 Factorial.sh

[root@tecmint ~]# ./Factorial.sh

 

Enter The Number

12

479001600

你可以从这里下载这个例子的代码

判断Armstrong数

Armstrong数:在三位的正整数中,例如abc,有一些可能满足(a^3)+(b^3)+(c^3)=abc,即各个位数的立方和正好是该数的本身。这些数即称为Armstrong数。


#!/bin/bash

echo "Enter A Number"

read n

arm=0

temp=$n

while [ $n -ne 0 ]

do

r=$(expr $n % 10)

arm=$(expr $arm + $r \* $r \* $r)

n=$(expr $n / 10)

done

echo $arm

if [ $arm -eq $temp ]

then

echo "Armstrong"

else

echo "Not Armstrong"

fi

输出结果:

[root@tecmint ~]# vi Armstrong.sh

[root@tecmint ~]# chmod 755 Armstrong.sh

[root@tecmint ~]# ./Armstrong.sh

 

Enter A Number

371

371

Armstrong

1

2

3

4

5

6

[root@tecmint ~]# ./Armstrong.sh

 

Enter A Number

123

36

Not Armstrong

判断质数


#!/bin/bash

echo “Enter Any Number”

read n

i=1

c=1

while [ $i -le $n ]

do

i=$(expr $i + 1)

r=$(expr $n % $i)

if [ $r -eq 0 ]

then

c=$(expr $c + 1)

fi

done

if [ $c -eq 2 ]

then

echo “Prime”

else

echo “Not Prime”

fi

输出结果:

[root@tecmint ~]# vi Prime.sh

[root@tecmint ~]# chmod 755 Prime.sh

[root@tecmint ~]# ./Prime.sh

 

“Enter Any Number”

12 

 

“Not Prime”