当前位置: 技术文章>> shell脚本编程之shell运算详解

文章标题:shell脚本编程之shell运算详解
  • 文章分类: 后端
  • 19501 阅读

计算机编程就是三大步:输入、运算、输出

那么计算机运算有哪些呢,计算机能做哪些运算呢?

我们来看看常见的计算机运算

一、赋值运算

赋值运算符 =

       a=10   
     name='baism'
 重点:字符串必须用引号引起来

二、算术运算[四则运算]

2.1 运算符与命令

四则运算符: + - \ 【加减乘除】
扩展: % *
 【取余 开方】

运算命令:

  • 整形运算
    – expr
    – let
    – $(())
    – bc

  • 浮点运算
    – bc

2.2 整形运算

expr 命令:只能做整数运算,格式比较古板,注意空格

[root@zutuanxue ~]# expr 1 + 1
2
[root@zutuanxue ~]# expr 5 - 2
3
[root@zutuanxue ~]# expr 5 \* 2  #注意*出现应该转义,否则认为是通配符
10
[root@zutuanxue ~]# expr 5 / 2
2
[root@zutuanxue ~]# expr 5 % 2
1

let命令:只能做整数运算,且运算元素必须是变量,无法直接对整数做运算

[root@zutuanxue ~]# let a=100+3;echo $a
103
root@zutuanxue ~]# let a=100-3;echo $a
97
[root@zutuanxue ~]# let a=100/3;echo $a
33
[root@zutuanxue ~]# let a=100*3;echo $a
300
[root@zutuanxue ~]# let a=100%3;echo $a
1
[root@zutuanxue ~]# let a=100**3;echo $a
1000000
[root@zutuanxue ~]# a=100
[root@zutuanxue ~]# let a++;echo $a
101
[root@zutuanxue ~]# let a--;echo $a
100
[root@zutuanxue ~]# let a-=3;echo $a
97
[root@zutuanxue ~]# let a+=5;echo $a
102

双小圆括号运算,在shell中(( ))也可以用来做数学运算

[root@zutuanxue ~]# echo $(( 100+3))
103
[root@zutuanxue ~]# echo $(( 100-3)) 
97
[root@zutuanxue ~]# echo $(( 100%3))
1
[root@zutuanxue ~]# echo $(( 100*3))
300
[root@zutuanxue ~]# echo $(( 100/3))
33
[root@zutuanxue ~]# echo $(( 100**3))     #开方运算
1000000

2.3 浮点运算

浮点运算是采用的命令组合的方式来实现的 echo “scale=N;表达式”|bc

[root@zutuanxue ~]# echo "scale=2;3+100"|bc
103
[root@zutuanxue ~]# echo "scale=2;100-3"|bc
97
[root@zutuanxue ~]# echo "scale=2;100/3"|bc
33.33
[root@zutuanxue ~]# echo "scale=2;100*3"|bc
300

2.4、练习案例

2.4.1 实现一个四则运算计算器

案例思考: 计算器的功能: + - * \

实现步骤:
1、要求用户传输三个参数,num1 算术运算符 num2
2、运算输出结果

实现代码

##03_calculator.sh
#!/bin/bash
# 
#Author: www.zutuanxue.com
#Release: 
#Description: 简单计算器
echo "$1 $2 $3"|bc

2.4.2 内存使用率统计,要求打印内存使用率

案例思考:

  • 物料1、内存总量 获得方式是什么 free top /proc/meminfo

  • 物料2、内存使用量

  • 物料3、内存使用率公式 使用量/总量*100%

实现步骤:

  • 1、获取内存总量

  • 2、获取内存使用量

  • 3、运算输出结果

实现代码

#job实现代码  04_memory_use.sh
#!/bin/bash
# 
#Author: www.zutuanxue.com
#Release: 
#Description:内存使用率计算脚本
#free
#1、获得内存总量
memory_total=`free -m|grep -i "mem"|tr -s " "|cut -d " " -f2`
#2、获得内存使用的量
memory_use=`free -m|grep -i "mem"|tr -s " "|cut -d " " -f3`
#3、计算输出
#运算的时候是否需要小数点 浮点运算,要考虑使用的命令 (难点 重点)
#echo "内存使用率: $((memory_use*100/memory_total))%"
#难点:浮点运算中,同优先级的情况下,大数除以小数 尽可能保证精确
echo "内存使用率: `echo "scale=2;$memory_use*100/$memory_total"|bc`%"

实现效果

#运算结果[root@zutuanxue day2]# sh memory_use.sh Memory使用率: 2.61%

三、比较运算

计算机除了算术和赋值运算外,还有比较运算,比如说比较两个数的关系,比较两个字符串的关系【用户登录系统】等。接下来我们学习如何在shell中进行比较运算

3.1、整形比较运算

                     运算符解释:
 精确比较
        -eq         等于 equal
        -gt         大于
        -lt         小于
 模糊比较
        -ge         大于或等于
        -le         小于或等于
        -ne         不等于

通过test命令比较两个整数关系

[root@zutuanxue ~]# test 100 -gt 300;echo $?
1
[root@zutuanxue ~]# test 100 -ge 300;echo $?
1
[root@zutuanxue ~]# test 100 -eq 300;echo $?
1
[root@zutuanxue ~]# test 100 -le 300;echo $?
0
[root@zutuanxue ~]# test 100 -lt 300;echo $?
0
[root@zutuanxue ~]# test 100 -ne 300;echo $?
0
备注:linux命令test只能比较两个整数的关系,不会返回结果,需要通过$?才能看到结果


推荐文章