bash shell中的数学计算

简介:

简介

在写shell脚本的时候会用到很多的数学运算,简单的一个游标+1 -1, 或者更多一点的浮点运算等,shell中数学计算稍麻烦,我想每个人都试过var=1+1 或者var=$xxx+1这类错误。 下面对shell中做数学计算小做总结

示例

 

  • 使用expr整数运算
    > var=1
    > var=`expr $var + 1`
    > echo $var
    2

其他的减乘除类似, 要注意乘法中的*号需要做转义\*即可

  • 使用bash内建命令let
    > var=2
    > let "var=var+1"
    > echo $var
    3
    > let "var=(2+2-1)/2" 
    > echo $var
    1

  • 使用大括号或者小括号
    > var=3
    > var=$((var+1))
    > echo $var
    4
    > var=$[var+1]
    > echo $var
    5

  • 浮点运算可以用bc或者awk等程序

bc更常用, 对运算来说也更好用一些,可以直接命令行使用:

> bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+1
2
1+1.1
2.1
1.1212*1.12
1.2557

也可以在标准输入作为输入,bc会把结果输出到标准输出:
> echo "2+1-5*1.111" | bc
-2.555

还可以用here-doc的方式把表达式传给bc
> bc <<< "1+2+3+3.3333" 
9.3333

bc在计算上还有很多强大的功能, 具体信息可以看下manpage,比如scale
> echo "scale=1;(1/3)" | bc 
.3
> echo "scale=10;(1/3)" | bc
.3333333333

awk也可以做算数计算,也支持浮点计算:
> var=1
> var=`echo "$var 5"|awk '{printf("%g",$1+$2)}'` 
> echo $var
6
目录
相关文章
|
7月前
|
移动开发 Shell Linux
百度搜索:蓝易云【Shell错误:/bin/bash^M: bad interpreter: No such file or directory】
将 `your_script.sh`替换为你的脚本文件名。运行此命令后,脚本文件的换行符将被转换为Linux格式,然后就可以在Linux系统上正常执行脚本了。
81 8
|
3月前
|
Unix Shell Windows
随笔:What is Bash? What is shell?
随笔:What is Bash? What is shell?
24 1
|
5月前
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
77 3
|
4月前
|
Shell Linux
在Linux中,哪⼀个bash内置命令能够进行数学运算?
在Linux中,哪⼀个bash内置命令能够进行数学运算?
|
4月前
|
缓存 Shell Linux
在Linux中,bash shell 中的 hash 命令有什么作用?
在Linux中,bash shell 中的 hash 命令有什么作用?
|
4月前
|
Shell Linux
在Linux中,使用bash shell实现条件判断和循环结构的例子是什么样的?
在Linux中,使用bash shell实现条件判断和循环结构的例子是什么样的?
|
6月前
|
Shell Linux Python
Shell 数学计算:轻松掌握算术运算基本功
在Shell脚本中进行数学计算需借助特定方法。`(())`用于高效整数运算,如`((1+1))`,而`bc`处理小数,如`echo &quot;3.14 + 2.86&quot; | bc`。`let`与`(())`相似,`expr`较繁琐,`declare -i`仅限基础整数运算。使用`bc`时,`scale`定义小数精度。通过这些工具,Shell脚本也能实现复杂的数学计算。
100 0
|
7月前
|
存储 Shell Linux
【攻防世界】unseping (反序列化与Linux bash shell)
【攻防世界】unseping (反序列化与Linux bash shell)
|
7月前
|
Shell
shell 命令(一)概述【别名、 bash重定向 、定义变量】
shell 命令(一)概述【别名、 bash重定向 、定义变量】
68 0
|
7月前
|
Shell
Shell(如Bash)命令行技巧
Shell(如Bash)命令行技巧
59 2