Section 25.1: 数学计算用 dc命令
dc 是 Unix 上最古老的程序之一。
它使用反向添加运算符号,即先堆叠数字,再进行运算。
例如,1+1 被写成 1 1+。
要打印堆栈顶端的元素,使用命令 p
echo '2 3 + p' | dc
5
or
dc <<< '2 3 + p'
5
您可以多次打印顶部元素
dc <<< '1 1 + p 2 + p'
2
4
负数使用 _ 前缀
dc <<< '_1 p'
-1
您还可以用大写字母 A 到 F 表示 10 到 15 之间的数字,用 . 表示小数点。
dc <<< 'A.4 p'
10.4
dc 使用任意精度的小数,这意味着小数的精度仅受可用内存的限制。默认情况下,精度设置为 0 小数
dc <<< '4 3 / p'
1
我们可以使用 k 命令提高精度。
dc <<< '2k 4 3 / p'
1.33
dc <<< '4k 4 3 / p'
1.3333
也可以在多行上使用计算
dc << EOF
1 1 +
3 *
p
EOF
6
bc是dc的预处理器。
Section 25.2: 使用 bash 计算功能计算数学
还可以进行算术运算,而无需使用任何其他类似程序:
乘法:
echo $((5 * 2))
10
除法:
echo $((5 / 2))
2
取余:
echo $((5 % 2))
1
乘幂:
echo $((5 ** 2))
25
Section 25.3: 数学计算使用 bc
bc 是一种任意精度的计算器语言。它可以交互式使用,也可以通过命令行执行。
例如,它可以打印出表达式的结果:
echo '2 + 3' | bc
5
echo '12 / 5' | bc
2
对于浮点运算,可以导入标准库 bc -l:
echo '12 / 5' | bc -l
2.40000000000000000000
它可用于比较表达式:
echo '8 > 5' | bc
1
echo '10 == 11' | bc
0
echo '10 == 10 && 8 > 3' | bc
1
Section 25.4: 数学计算使用 expr
expr 或 “评估表达式 ”对表达式进行评估,并将结果写入标准输出。
基本算术
expr 2 + 3
5
进行乘法运算时,需要转义 * 号
expr 2 \* 3
6
您还可以使用变量
a=2
expr $a + 3
5
请记住,它只支持整数,因此表达式如下
expr 3.0 / 2
会产生一个错误 expr: not a decimal number: '3.0'。
支持正则表达式匹配模式
expr 'Hello World' : 'Hell\(.*\)rld'
o Wo
或查找搜索字符串中第一个字符的索引
在 Mac OS X 上会出现 expr: 语法错误,因为它使用的是 BSD expr,没有 index 命令,而 Linux 上的 expr 一般是 GNU expr
expr index hello l
3
expr index 'hello' 'lo'
3