变量的数学运算

方法一:expr

##加减乘除

[root@localhost ~]# num1=10
[root@localhost ~]# num2=16
[root@localhost ~]# expr $num1 + $num2
26
[root@localhost ~]# num3=`expr $num1 \* num2`
[root@localhost ~]# echo $num3
160
[root@localhost ~]# num3=$(expr $num1 / $num2) 
[root@localhost ~]# echo $num3
0         #默认不显示小数,取整

注意:

  1. 请用空格隔开每个项。
  2. 请将反斜杠(\)放在 Shell 特殊字符前面 如\* 。
  3. 请对包含空格和其他特殊字符的字符串用引号括起来。
  4. $()命令替换与``(反引号)都是用来作命令替换的。

方法二:$(())

$符号加(())

[root@localhost ~]# num1=10
[root@localhost ~]# num2=16
[root@localhost ~]# echo $((num1+num2)) #加
26
[root@localhost ~]# echo $(($num1-$num2)) #减变量加$也可以
-6
[root@localhost ~]# echo $((num3=num1*num2)) #乘
160
[root@localhost ~]# ((num4=num2/num1))
[root@localhost ~]echo $num4
0        #除,默认取整数,不显示小数

注意:这种写法(( ))内使用变量时可以不用加$前缀,(( )) 会自动解析变量名。

方法三:$[]

$符号加[]

[root@localhost ~]# num1=10
[root@localhost ~]# num2=16
[root@localhost ~]# echo $[num1 + num2] #加
26
[root@localhost ~]# echo $[num1 - num2] #减
-6
[root@localhost ~]# echo $[num1 * num2] #乘
160
[root@localhost ~]# echo $[num2 / num1] #除,同上
1

方法四:let

let不直接输出

[root@localhost ~]# num1=10
[root@localhost ~]# num2=16
[root@localhost ~]# let sum=$num1+$num2;echo $sum #加
26
[root@localhost ~]# let sum=$num1-$num2;echo $sum #减
-6
[root@localhost ~]# let sum=$num1*$num2;echo $sum #乘
160
[root@localhost ~]# let sum=$num2/$num1;echo $sum #除
1

扩展:小数运算bc

scale=n;定义小数精度,此外可以直接运行bc命令进行输入计算

[root@localhost ~]# num1=1.8
[root@localhost ~]# num2=2.2
[root@localhost ~]# echo "scale=3;$num1+$num2" | bc
4.0
[root@localhost ~]# echo "scale=2;$num2-$num1" | bc
.4
[root@localhost ~]# echo "scale=2;$num2*$num1" | bc
3.96
[root@localhost ~]# num3=`echo "scale=2;$num2/$num1" | bc`
[root@localhost ~]# echo $num3
1.22

扩展:小数运算awk

awk -v 带入外部变量,'{ print num1 + num2 }'即可

[root@localhost project]# num1=2.1
[root@localhost project]# num2=1.5
[root@localhost project]# echo | awk -v num1=$num1 -v num2=$num2 "{print num1 + num2 }"
3.6
[root@localhost project]# echo | awk -v num1=$num1 -v num2=$num2 "{print num1 - num2 }"
0.6
[root@localhost project]# echo | awk -v num1=$num1 -v num2=$num2 "{print num1 * num2 }"
3.15
[root@localhost project]# echo | awk -v num1=$num1 -v num2=$num2 "{print num1 / num2 }"
1.4

实例练习:保存硬件信息脚本1.csv

#!/bin/bash
#auther by wxp
IP_ADDRESS=`ifconfig ens32|grep netmask|tr -s " " :|cut -d: -f3`
CPU_MODEL=`cat /proc/cpuinfo|grep "model name"|cut -d: -f2`
CPU_CORES=`cat /proc/cpuinfo|grep "cpu cores"|cut -d: -f2`
MEM_TOTLE=`expr $(cat /proc/meminfo|grep "MemTotal"|tr -s " " :|cut -d: -f2) / 1024 `
MEM_FREE=`expr $(cat /proc/meminfo|grep "MemFree"|tr -s " " :|cut -d: -f2) / 1024`
MEM_USEAGE=`echo "scale=2;$MEM_FREE*100/$MEM_TOTLE"|bc`
DISK_TOTAL=`fdisk -l|grep "/dev/sda:"|cut -d' ' -f2|cut -d: -f2`
LOAD_INFO=`uptime|awk '{print $(NF)}'` echo -e "\033[32m----------------------Device Info---------------------\033[0m"
echo -e "\033[33mIP地址:$IP_ADDRESS\033[0m"
echo -e "\033[33mcpu型号:$CPU_MODEL"
echo -e "\033[33mcpu核心数:$CPU_CORES\033[0m"
echo -e "\033[33m内存大小:$MEM_TOTLE M"
echo -e "\033[33m内存空闲:$MEM_FREE M"
echo -e "\033[33m内存使用率:$MEM_USEAGE %\033[0m"
echo -e "\033[33m磁盘总空间:$DISK_TOTAL GB\033[0m"
echo -e "\033[33m负载:$LOAD_INFO\033[0m"
echo -e "\033[32m--------------------------Over-------------------------\033[0m"
#save
echo "do you want to sava it?"
read -p "1)yes, 2)no, :" yes_no
case $yes_no in
1) echo "you choose yes!save it to 1.csv"
echo "IP地址,cpu型号,cpu核心数,内存大小,内存剩余,内存使用率,硬盘大小,15分钟负载" >> 1.csv
echo "IP_ADDRESS:${IP_ADDRESS},CPU_MODEL:${CPU_MODEL},CPU_CORES:${CPU_CORES},MEM_TOTLE:${MEM_TOTLE},\
MEM_FREE:${MEM_FREE},MEM_USEAGE:${MEM_USEAGE},DISK_TOTAL:${DISK_TOTAL},LOAD_INFO:${LOAD_INFO}" >> 1.csv
;; 2) echo "you choose no!" exit;;
*) echo "Illegal input!";;
esac

shell 变量的运算、保存硬件信息脚本的更多相关文章

  1. shell变量数学运算

    shell变量数学运算 #!/bin/sh # 本脚本说明shell脚本中变量运算的用法 # 错误的用法var=1var=$var+1echo $var 输出:1+1 # 第一种用法,letvar=1 ...

  2. shell变量与运算

    shell变量与运算 @(0003 shell编程) 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不 ...

  3. Linux shell 变量 数学 运算

    Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...

  4. shell 变量赋值运算

    .变量赋值: name=lbg 等号前后不能有空格 name="Lebron James" 变量值中有空格要用双引号 echo ${name} 用${}更保险 shopt -s - ...

  5. Shell基础之四 变量与运算

    shell变量与运算 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不是$str. 变量数据的存储方式 ...

  6. 02 . Shell变量和逻辑判断及循环使用

    Shell变量 系统变量 在命令行提示符直接执行 env.set 查看系统或环境变量.env 显示用户环境变量,set 显示 Shell预先定义好的变量以及用户变量.可以通过 export 导出成用户 ...

  7. 利用CMD查看系统硬件信息

    利用CMD查看系统硬件信息对于在windows下查看系统信息大家一定不陌生了,我现在说几个最常用的方法,对命令感兴趣的朋友看看,(给菜鸟看的,老手就不要笑话我了,大家都是从那个时候过来的,^_^).一 ...

  8. (转)IBM AIX系统硬件信息查看命令(shell脚本)

    IBM AIX系统硬件信息查看命令(shell脚本) 原文:http://blog.itpub.net/22085031/viewspace-1054015/ 查看IBM AIX系统的主机型号.序列号 ...

  9. Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

    1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

  10. Shell脚本编程(二):shell变量

    定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...

随机推荐

  1. Socket Tcp高密集信息广播转发强度测试

    在有些场中存在着大量的消息广播转发,为了了解.net socket tcp在这方面的性能表现,所以做了一个比较极端信息广播转发强度测试.测试场景是以400个连接信息相互广播为测试用例就是当其中一个连接 ...

  2. Educational Codeforces Round 77 (Rated for Div2)

    B - Obtain Two Zeroes 给定两个整数\(a,b\),你可以执行以下操作任意次:每次操作选择一个正整数\(x\),使得\(a:=a-x,b:=b-2x\)或者\(a:=a-2x,b: ...

  3. HTML img标签

    1.基本用法 <img src="kof5.jpg" alt="特瑞"> src属性为图片的链接地址,如果图片加载失败,代替图片的就是alt属性设置 ...

  4. Linux查看进程所在目录

    通过ps 或 top 查看进程信息时,只能查到进程的相对路径,查不到进程的详细信息,如绝对路径等,我们可以通过下面的方法进行查询 1. 通过ll /proc/PID 命令查看进程所在的目录位置 lin ...

  5. openEuler欧拉系统重置root密码

    步骤: 系统启动时,出现如下页面,按e进入内核编辑模式 进入如下页面 按下光标后,找到linux开头这一行,修改ro为rw,并在行尾添加init=/bin/sh,修改后效果如下,在crtl+x保存后开 ...

  6. 【Rive】波动文字

    1 前言 ​ 本文将使用文本修改器(Text Modifiers)做文字动画,实现文字波动效果. ​ 按以下步骤可以创建一个 Modifier Group 和 Range. ​ 部分参数的释义如下. ...

  7. Docker之操作系统Alpine

    简介 图 1.24.2.1 - Apline Linux 操作系统 Alpine 操作系统是一个面向安全的轻型 Linux 发行版.它不同于通常 Linux 发行版,Alpine 采用了 musl l ...

  8. Qt编写的视频播放综合应用示例(qmedia/ffmpeg/vlc/mpv/海康sdk等)

    一.功能特点 1.1 基础功能 支持各种音频视频文件格式,比如mp3.wav.mp4.asf.rm.rmvb.mkv等. 支持本地摄像头设备,可指定分辨率.帧率. 支持各种视频流格式,比如rtp.rt ...

  9. Qt编写物联网管理平台36-通信协议

    一.前言 本系统默认采用modbus协议,支持串口和网络rtu模式,后期还会引入其他通信协议比如mqtt等,可以在端口管理中下拉选择通信协议即可. 1.1 通信流程 整体的结构是:控制器挂在通信端口, ...

  10. [转]GMM:高斯混合模型讲义(台湾)