本文旨在总结shell编程中取算术运算数值的常用6种方法:let、(())、$[]、expr、bc以及awk
知识储备:
Bash原生是不支持算术运算的,默认会当作字符串来处理,如下例
1 | #!/bin/bash |
对于一些需要算术运算结果的片段,如何取得算术运算结果大致有以下6种方法,分别简单介绍
用法Let
注意点:
<1>几乎支持所有运算,如++、--、括号优先级等,求幂次方用**
<2>变量引用可以不带$号,如变量num1=num1+1
<3>一般情况下算术表达式可以不加引号,若表达式中有bash关键字需加上
<4>let后面的表达式只支持整数运算
代码实现:
1 | #!/bin/bash |
用法(())
注意点:
<1>用法、支持的运算基本同let,效果基本等价
<2>变量引用可以不带$,建议带上
代码实现:
1 | #!/bin/bash |
用法$[]
注意点:
<1>使用比较广泛,意思是将中括号内的表达式作为数学运算先计算结果再输出
<2>$[]中变量引用可不带$,但是建议带上
<3>运算支持同let,但是只支持整数运算
代码实现:
1 | #!/bin/bash |
用法expr
注意点:
<1>一款表达式计算工具,能够完成表达式的求值操作,它本身是一个命令,可以直接使用
<2>支持逻辑运算| & ,支持关系运算< <= = != ,支持算术运算+ - * / %
<3>乘法必须使用转义 \*,否则会连接字符串
<4>表达式和运算符之间要有空格!正确格式 ARG1 - ARG2
<5>默认只能保留整数位,不支持浮点数运算
代码实现:
1 | #!/bin/bash |
用法bc
注意点:
<1>bc其实也是一个命令,是一个计算器程序,有些Linux未必自带
<2>bc可以实现几乎所有运算,但是需要进入bc交互接口,所以在shell中使用管道来处理
<3>支持浮点数运算,但是需要通过sacle指定精度
代码实现:
1 | #!/bin/bash |
用法awk
注意点:
<1>awk本质是一款文本处理、格式化报表输出工具,同时也可以作为一门编程语言
<2>虽然bash原生不支持运算,但是awk支持众多运算,还能进行浮点运算
代码实现:
1 | #!/bin/bash |
转载于:https://blog.51cto.com/bluebox/1697060