shell 算术运算
Bash shell 环境可以执行基本的算术运算利用一些命令如 let、(()),以及[]。expr 和 bc 这两个工具在执行高级操作时也很有用。
let 命令可以被用于直接执行基本操作,在使用 let 时,用变量名就行了,不用带 $ 前缀。例如:
#!/bin/bash
no1=4;
no2=5;
let result=no1+no2
echo $result
递增操作:let no1++
递减操作:let no1--
简写:let no+=6
let no-=6
[] 操作符也可像 let 命令那样:result=$[ no1 + no2],在[]里面使用 $ 前缀是合法的,例如:
result=$[ $no1 + 5]
当用的是(())操作符,就用 $变量名 这种格式。如:result=$(( no1 + 50))
expr 也可用于基本操作:
result=`expr 3 + 4`
result=$(expr $no1 + 5)
前面这些方法都不支持浮点数,只能在整数上操作。
bc,精确计算器,是一个高级同居用于算术操作。它有很多选项。我们可以执行浮点操作,并使用高级函数,例如:
echo "4 * 0.56" | bc
2.24
no=54;
result=`echo "$no * 1.5" | bc`
echo $result
81.0
Additional parameters can be passed to bc with prefixes to the operation with
semicolon as delimiters through stdin.
Decimal places scale with bc: In the following example the scale=2
parameter sets the number of decimal places to 2. Hence, the output
of bc will contain a number with two decimal places:
echo "scale=2;3/8" | bc
0.37
Base conversion with bc: We can convert from one base number system to
another one. Let us convert from decimal to binary, and binary to octal:
#!/bin/bash
Desc: Number conversion
no=100
echo "obase=2;$no" | bc
1100100
no=1100100
echo "obase=10;ibase=2;$no" | bc
100
Calculating squares and square roots can be done as follows:
echo "sqrt(100)" | bc #Square root
echo "10^10" | bc #Square