8—数学计算命令
"操作数字"
8.1 factor 将一个正数分解为多个素数.
bash$ factor 27417
27417: 3 13 19 37
8.2 bc
Bash不能处理浮点运算, 并且缺乏特定的一些操作, 这些操作都是一些重要的计算功能. 幸运的是, bc可以解决这个问题.
bc不仅仅是个多功能灵活的精确计算工具, 且它还提供许多编程语言才具备的一些方便功能.
bc比较类似于C语言的语法.
因为它是一个完整的UNIX工具, 所以它可以用在pipe中, bc在脚本中也是很常用的.
这里有一个简单的使用bc命令的模版, 可以用来计算脚本中的变量. 这个模版经常用于命令替换中.
variable=$(echo "OPTIONS; OPERATIONS" | bc)
8.4 调用bc的另一种方法就是here document, 并把它嵌入到命令替换块中. 当一个脚本需要将一个选项列表和多个命令传递到bc中时, 这种方法就显得非常合适了.
1 variable=`bc << LIMIT_STRING
2 options
3 statements
4 operations
5 LIMIT_STRING
6 `
7
8 ...or...
9
10
11 variable=$(bc << LIMIT_STRING
12 options
13 statements
14 operations
15 LIMIT_STRING
16 )
8.5 dc
dc(桌面计算器desk calculator)工具是面向栈的, 并且使用RPN(逆波兰表达式"Reverse Polish Notation"又叫"后缀表达式"). 与bc命令很相似, 但是这个工具具备好多只有编程语言才具备的能力.
1 (
2 译者注: 正常表达式 逆波兰表达式
3 a+b a,b,+
4 a+(b-c) a,b,c,-,+
5 a+(b-c)*d a,d,b,c,-,*,+
6 )
7
绝大多数人都避免使用这个工具, 因为它需要非直观的RPN输入, 但是, 它却有特定的用途.
8.6 awk
在脚本中使用浮点运算的另一种方法是使用awk内建的数学运算函数, 可以用在shell包装中.
阅读(329) | 评论(0) | 转发(0) |