linux下的shell运算(加、减、乘、除)

简单方法
((i=$j+$k))    等价于 i=`expr $j + $k`
((i=$j-$k))     等价于   i=`expr $j - $k`
((i=$j*$k))     等价于   i=`expr $j \* $k`
((i=$j/$k))     等价于   i=`expr $j / $k`

Let expressions 执行一个或多个表达式。表达式中的变量前不必有$.如果表达式中包含了空格或其他特殊字符,则必须引起来。

例:let “I = I + 1” 或 let i=i+1

算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。Shell中常用的数学运算符如下所示。

 +:对两个变量做加法。

 -:对两个变量做减法。

 *:对两个变量做乘法。

 /:对两个变量做除法。

 **:对两个变量做幂运算。

 %:取模运算,第一个变量除以第二个变量求余数。
 
 +=:加等于,在自身基础上加第二个变量。
 
 -=:减等于,在第一个变量的基础上减去第二个变量。
 
 *=:乘等于,在第一个变量的基础上乘以第二个变量。
 
 /=:除等于,在第一个变量的基础上除以第二个变量。
 
 %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。

在使用这些运算符时,需要注意到运算顺序的问题。例如输入下面的命令,输出1+2的结果。

echo 1+2

Shell并没有输出结果3,而是输出了1+2。在shell中有三种方法可以更改运算顺序。

用expr改变运算顺序。可以用echo expr 1 +2来输出1+2的结果,用expr表示后面的表达式为一个数学运算。需要注意的是,`并不是一个单引号,而是“Tab”键上面的那个符号。

用let指示数学运算。可以先将运算的结果赋值给变量b,运算命令是let b=1+2。然后用echo $b来输出b的值。如果没有let,则会输出1+2。

用$[] 表示数学运算。将一个数学运算写到$[] 符号的中括号中,中括号中的内容将先进行数学运算。例如命令echo $[1+2],将输出结果3。

浮点运算
expr 5.0 - 4

expr: 非法参数

echo $((5.0-4))

-bash: 5.0-4: syntax error in expression (error token is “.0-4”)

从上面运算结果,看来上面表达式,不足以支持浮点运算了。查阅资料才发现:bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。

方法一:

c=$(echo "5.01-4*2.0"|bc)
echo $c

-2.99

方法二:

c=$(awk 'BEGIN{print 7.01*5-4.01 }')
echo $c

31.04

如果两个操作数是保存在变量中,必然 a=2.2,b=5,需要计算a除以b该怎么操作呢? awk ‘{print a / a/ a/b}’,很可惜,这样是不行的,似乎在awk里面无法通过$a来获取变量的值,但是可以通过echo的方式把变量值传入, echo “$a $b” | awk ‘{print $1/$2}’,这样就可以了,如果还有操作数,都加在echo中就行了
注:在shell 中$() 与 ``等效。 中间包含命令语句执行,返回执行结果。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值