Shell中常用的算术运算
欢迎光临! 本篇文章主要讲述我们编写shell脚本时,最最常用的算术运算方法。仔细阅读这篇文章,你就可以掌握Linux shell脚本中基本数学运算。感兴趣的可以加关注哦!
1. 加法
x=4
y=5
# 方法1
r=`expr $x + $y + 1` # 注:变量需要加$,运算符之间需要有空格
# 方法2
r=$((x+y+1)) # 或者
r=$(($x+$y+1)) # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法3(类似方法2)
r=$[x+y+1] # 或者
r=$[$x+$y+1] # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法4
let r=x+y+1 # 或者
let "r=$x+$y+1" # 或者
let r=$x+$y+1 # 注:变量前$可加可不加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法5
echo $x + $y + 1 | bc # 或者
echo "$x + $y + 1" | bc # 注:变量前$必须加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法6
r=`echo $x $y | awk '{print $1+$2}'`
2. 减法
x=10
y=5
# 方法1
r=`expr $x - $y - 1` # 注:变量需要加$,运算符之间需要有空格
# 方法2
r=$((x-y-1)) # 或者
r=$(($x-$y-1)) # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法3(类似方法2)
r=$[x-y-1] # 或者
r=$[$x-$y-1] # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法4
let r=x-y-1 # 或者
let "r=$x-$y-1" # 或者
let r=$x-$y-1 # 注:变量前$可加可不加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法5
r=`echo $x - $y - 1 | bc` # 或者
r=`echo "$x - $y - 1" | bc` # 注:变量前$必须加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法6
r=`echo $x $y | awk '{print $1-$2}'`
3. 乘法
x=10
y=5
# 方法1
r=`expr $x * $y - 1` # 注:变量需要加$,运算符之间需要有空格,*()需要用转义
# 方法2
r=$((x*y-1)) # 或者
r=$(($x*$y-1)) # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法3(类似方法2)
r=$[x*y-1] # 或者
r=$[$x*$y-1] # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法4
let r=x*y-1 # 或者
let "r=$x*$y-1" # 或者
let r=$x*$y-1 # 注:变量前$可加可不加,运算符之间空格可有可无,双引号可有可无(除非有括号)
# 方法5
r=`echo $x * $y - 1 | bc` # 或者
r=`echo "$x * $y - 1" | bc` # 注:变量前$必须加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法6
r=`echo $x $y | awk '{print $1*$2}'`
4. 除法
x=10
y=5
# 方法1
r=`expr $x / $y - 1` # 注:变量需要加$,运算符之间需要有空格
# 方法2
r=$((x/y-1)) # 或者
r=$(($x/$y-1)) # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法3(类似方法2)
r=$[x/y-1] # 或者
r=$[$x/$y-1] # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法4
let r=x/y-1 # 或者
let "r=$x/$y-1" # 或者
let r=$x/$y-1 # 注:变量前$可加可不加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法5
r=`echo $x / $y - 1 | bc` # 或者
r=`echo "$x / $y - 1" | bc` # 注:变量前$必须加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法6
r=`echo $x $y | awk '{print $1/$2}'` # 支持浮点数,除法结果可能是浮点数
5. 取余
x=10
y=7
# 方法1
r=`expr $x % $y - 1` # 注:变量需要加$,运算符之间需要有空格
# 方法2
r=$((x%y-1)) # 或者
r=$(($x%$y-1)) # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法3(类似方法2)
r=$[x%y-1] # 或者
r=$[$x%$y-1] # 注:变量前$可加可不加,运算符之间空格可有可无
# 方法4
let r=x%y-1 # 或者
let "r=$x%$y-1" # 或者
let r=$x%$y-1 # 注:变量前$可加可不加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法5
r=`echo $x % $y - 1 | bc` # 或者
r=`echo "$x % $y - 1" | bc` # 注:变量前$必须加,运算符之间空格可有可无,引号可有可无(除非有括号)
# 方法6
r=`echo $x $y | awk '{print $1%$2}' `
5. 混合运算
x=4
y=5
# 方法1
r=`expr $x + ($y * 2 / 3 % 4 ) + 1` # 注:变量需要加$,运算符之间需要有空格,*()需要用转义
# 方法2
r=$(($x + ($y*2/3%4) + 1))
# 方法3
r=$[$x + ($y*2/3%4) + 1]
# 方法4
let "r=$x + ($y*2/3%4) + 1" # 注:有括号的运算,一定要加引号
# 方法5
r=`echo "$x + ($y*2/3%4) + 1" | bc`
# 方法6
r=`echo $x $y | awk '{print $1 + ($2*2/3%4) + 1}'` # 除法会产生浮点数
虽然Bash shell 有六种算术运算方法,但并不是每一种都是跨平台的,建议按需使用。
6. 浮点数运算
举几个例子吧:
# 小数点后留5位
echo "scale=5;$x/$y" | bc
echo $x $y | awk '{printf "%.5fn", $1/$2}'
echo $x | awk '{printf "%xn", $1}'
原文地址:https://blog.csdn.net/hello_nofail/article/details/129966335
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_34664.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。