首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
常用软件
运维软件
办公软件
书籍资源
日知录
招聘信息
读书计划
书单
关于我们
首页 运维教程shell脚本【Linux】shell脚本实战-使用shell进行数学运算

【Linux】shell脚本实战-使用shell进行数学运算

前言

上篇文章我们探讨了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 ~]# echoresult
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 ~]# echoresult
11
4. expr的使用
[root@ecs-c13b ~]# result=`expr 3 + 4`

[root@ecs-c13b ~]# echo $result
7
[root@ecs-c13b ~]# 
[root@ecs-c13b ~]# result=(exprNO1 + 5)

[root@ecs-c13b ~]# echo $result
10
[root@ecs-c13b ~]# 
[root@ecs-c13b ~]# expr 3 \* 5
15

这里的* 用\做转义。

[root@ecs-c13b ~]# expr 3 \+ 5
8
5. bc的使用

bc是一个高级数据运算工具, 这个工具包含了计算器的很多选项和功能。

a. 基础运算
[root@ecs-c13b ~]# echo "4 * 0.5" |bc
2.0
[root@ecs-c13b ~]# echo "$NO1 * 0.5" |bc

2.5
b. 设置小数精度: 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
.30
c. 二进制和十进制转换

[root@ecs-c13b ~]# no=10
[root@ecs-c13b ~]# echo no
10
[root@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脚本中占的比重不多,大部分都可以使用命令查出结果,着实有需要计算的才考虑使用数学运算符。
技术这东西就是这样,你知道了,用不到就放在那,用到了就随时调取。

互联网老辛:
互联网编程手艺人,架构师,一个技术极客,一个布道者;高中起就有一个做讲师的梦想,工作十余载,终于有幸成为云计算讲师,持续钻研云计算和信息安全领域,并继续把自己所学所感真心传授给自己的学员,帮助更多想要进入IT行业的小伙伴。传道授业解惑,深知责任重大,每日战战兢兢,如履薄冰。苦心钻研,一直前行,不敢有丝毫懈怠。

本文链接:http://www.geekyunwei.com/2036.html

网友评论comments

发表评论

邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 备案号: 京ICP备2021004281号
扫二维码
扫二维码
返回顶部