Shell 之Bash数学运算

expr

语法格式

expr 操作符对照表

操作符 含义
num1 | num2 num1不为空且非0 ,返回num1 ;否则返回num2
num1 & num2 num1不为空且非0,返回num1 ;否则返回0
hum1 < num2 num1小于num2 ,返回1 ;否则返回0
num1 <= num2 num1小于等于num2 ,返回1 ;否则返回0
num1 = num2 num1等于num2 ,返回1 ;否则返回0
num1 != num2 num1不等于num2 ,返回1 ;否则返回0
num1 > num2 num1大于num2 ,返回1 ;否则返回0
num1 >= num2 num1大于等于num2 ,返回1 ;否则返回0
num1 + num2 求和
num1 - num2 求差
num1 * num2 求积
num1 / num2 求商
num1 % num2 求余

=号判断使用$(($num1 = $num2))会出错,但使用==时可以
运行成功时 echo $?返回0


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
num1=20
num2=100
expr $num1 \| $num2
expr $num1 \& $num2
expr $numl \< $num2
expr $num1 \< $num2
expr $num1 \<= $num2
expr $num1 \> $num2
expr $num1 \>= $num2
expr $num1 = $num2
expr $num1 != $num2
expr $num1 + $num2
expr $num1 - $num2
expr $num1 \* $num2
expr $num1 / $num2
expr $num1 % $num2

求和案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

while true
do
read -p "Please input a postive number: " num
# 不需要expr $num + 1的返回值
expr $num + 1 &> /dev/null
#判断是不是整形
if [ $? -eq 0 ];then
if [ `expr $num \> 0` -eq 1 ];then
for((i=1;i<=$num;i++))
do
sum=`expr $sum + $i`
done
echo "The ans is $sum"
exit
fi
fi
echo "illegal input"
continue

done

bc

  1. bc是bash内建的运算器, 支持浮点数运算
  2. 内建变量scale可以设置,默认为0

bc操作符对照表

操作符 含义
num1 + num2 求和
num1 - num2 求差
num1 * num2 求积
num1 / num2 求商
num1 % num2 求余

案例

1
2
3
4
5
[root@master datas]# echo "23+35" | bc
58

[root@master datas]# echo "scale=5;23/35" | bc
.65714

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×