欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-07-20 17:50:32
这部分主要讨论数学相关的shell脚本编程。 加法运算 新建一个文件“addition.sh”,输入下面的内容并赋予其可执行的权限。 复制代码 代码如下:#!/bin...

这部分主要讨论数学相关的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”