文章目录
- 前言
 - 一. 数据运算命令介绍
 
- 1. let的使用
 - 2. [ ] 的使用
 - 3. (())的使用
 - 4. expr的使用
 - 5. bc的使用
 
- a. 基础运算
 - b. **设置小数精度: scale**
 - c. 二进制和十进制转换
 - d. 计算平方根
 
- 二. 获取字符串的长度
 - 总结
 
前言
上篇文章我们探讨了shell脚本的基础和变量, 在学习变量的时候我们探讨了环境变量和用户自定义变量,以及一些特殊的用法。无论使用哪种语言都少不了进行算术操作,今天我们来看看如何使用shell脚本进行数学运算
一. 数据运算命令介绍
在shell环境中,我们可以使用的数据运算命令有:
- let
 - (())
 - [ ]
 - expr
 - bc
 
1. let的使用
自加操作 let n++
 自减操作 let n–
 简写形式: let no +=6 等同于 let no = no +6
 let no-=6 等同于 let no = no - 6
2. [ ] 的使用
[root@ecs-c13b ~]# result=$[ 1 + 2 ]
[root@ecs-c13b ~]# echo $result
3[root@ecs-c13b ~]# NO1=5
[root@ecs-c13b ~]# result=$[ $NO1 + 5 ]
[root@ecs-c13b ~]# echo $result 
10
[root@ecs-c13b ~]#3. (())的使用
[root@ecs-c13b ~]# result=$((6+5))
[root@ecs-c13b ~]# echo $result
114. expr的使用
[root@ecs-c13b ~]# result=`expr 3 + 4`
[root@ecs-c13b ~]# echo $result
7
[root@ecs-c13b ~]#[root@ecs-c13b ~]# result=$(expr $NO1 + 5)
[root@ecs-c13b ~]# echo $result
10
[root@ecs-c13b ~]#[root@ecs-c13b ~]# expr 3 \* 5
15
这里的* 用\做转义。
[root@ecs-c13b ~]# expr 3 \+ 5
85. bc的使用
bc是一个高级数据运算工具, 这个工具包含了计算器的很多选项和功能。
a. 基础运算
[root@ecs-c13b ~]# echo "4 * 0.5" |bc
2.0[root@ecs-c13b ~]# echo "$NO1 * 0.5" |bc
2.5b. 设置小数精度: scale
[root@ecs-c13b ~]# echo "scale=2;3/8"| bc
.37
[root@ecs-c13b ~]# echo "scale=2;3/7"| bc
.42
[root@ecs-c13b ~]# echo "scale=2;3/10"| bc
.30c. 二进制和十进制转换
[root@ecs-c13b ~]# no=10
 [root@ecs-c13b ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 24: …oot@ecs-c13b ~]#̲ echo "obase=2;no" |bc
 1010
十进制
 [root@ecs-c13b ~]# no=10000011110000
 [root@ecs-c13b ~]# echo $no
 10000011110000
[root@ecs-c13b ~]# echo “obase=10; ibase=2;$no”|bc
 8432
d. 计算平方根
[root@ecs-c13b ~]# echo “sqrt(100)” |bc
 10
二. 获取字符串的长度
方法一:
[root@ecs-c13b ~]# test=zmgaosh1234567
[root@ecs-c13b ~]# echo $test
zmgaosh1234567
[root@ecs-c13b ~]# length=${#test}
[root@ecs-c13b ~]# echo $length
14方法二:
[root@ecs-c13b ~]# expr length $test
14总结
数学运算在shell脚本中占的比重不多,大部分都可以使用命令查出结果,着实有需要计算的才考虑使用数学运算符。
 技术这东西就是这样,你知道了,用不到就放在那,用到了就随时调取。
                










