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

举报
互联网老辛 发表于 2021/06/08 23:34:02 2021/06/08
【摘要】 文章目录 前言一. 数据运算命令介绍1. let的使用2. [ ] 的使用3. (())的使用4. expr的使用5. bc的使用a. 基础运算b. **设置小数精度: scale**c. 二进制和十进制转换d. 计算平方根 二. 获取字符串的长度总结 前言 上篇文章我们探讨了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 ~]# echo $result
3

  
 
  • 1
  • 2
  • 3
[root@ecs-c13b ~]# NO1=5
[root@ecs-c13b ~]# result=$[ $NO1 + 5 ]
[root@ecs-c13b ~]# echo $result 
10
[root@ecs-c13b ~]# 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
3. (())的使用
[root@ecs-c13b ~]# result=$((6+5))
[root@ecs-c13b ~]# echo $result
11

  
 
  • 1
  • 2
  • 3
4. expr的使用
[root@ecs-c13b ~]# result=`expr 3 + 4`

[root@ecs-c13b ~]# echo $result
7
[root@ecs-c13b ~]# 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
[root@ecs-c13b ~]# result=$(expr $NO1 + 5)

[root@ecs-c13b ~]# echo $result
10
[root@ecs-c13b ~]# 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
[root@ecs-c13b ~]# expr 3 \* 5
15

这里的* 用\做转义。

[root@ecs-c13b ~]# expr 3 \+ 5
8

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
5. bc的使用

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

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

  
 
  • 1
  • 2
[root@ecs-c13b ~]# echo "$NO1 * 0.5" |bc

2.5

  
 
  • 1
  • 2
  • 3
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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
c. 二进制和十进制转换

[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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

方法二:

[root@ecs-c13b ~]# expr length $test
14

  
 
  • 1
  • 2

总结

数学运算在shell脚本中占的比重不多,大部分都可以使用命令查出结果,着实有需要计算的才考虑使用数学运算符。
技术这东西就是这样,你知道了,用不到就放在那,用到了就随时调取。

文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。

原文链接:zmedu.blog.csdn.net/article/details/107819157

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。