ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-04-13 22:58:02  阅读:188  来源: 互联网

标签:实战 shell no Linux echo ecs c13b let root



文章目录


前言

上篇文章我们探讨了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 $result3

[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 $result11

4. expr的使用
[root@ecs-c13b ~]# result=`expr 3 + 4`[root@ecs-c13b ~]# echo $result7[root@ecs-c13b ~]#

[root@ecs-c13b ~]# result=$(expr $NO1 + 5)[root@ecs-c13b ~]# echo $result10[root@ecs-c13b ~]#

[root@ecs-c13b ~]# expr 3 \* 515

这里的* 用\做转义。[root@ecs-c13b ~]# expr 3 \+ 58

5. bc的使用

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

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

[root@ecs-c13b ~]# echo "$NO1 * 0.5" |bc2.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 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 $testzmgaosh1234567[root@ecs-c13b ~]# length=${#test}[root@ecs-c13b ~]# echo $length14

方法二:

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

总结

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

标签:实战,shell,no,Linux,echo,ecs,c13b,let,root
来源: https://blog.51cto.com/xinsz08/2704370

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有