shell 变量的运算、保存硬件信息脚本
变量的数学运算
方法一: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 #默认不显示小数,取整
注意:
- 请用空格隔开每个项。
- 请将反斜杠(\)放在 Shell 特殊字符前面 如\* 。
- 请对包含空格和其他特殊字符的字符串用引号括起来。
$()命令替换与``(反引号)都是用来作命令替换的。
方法二:$(())
$符号加(())
[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 变量的运算、保存硬件信息脚本的更多相关文章
- shell变量数学运算
shell变量数学运算 #!/bin/sh # 本脚本说明shell脚本中变量运算的用法 # 错误的用法var=1var=$var+1echo $var 输出:1+1 # 第一种用法,letvar=1 ...
- shell变量与运算
shell变量与运算 @(0003 shell编程) 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不 ...
- Linux shell 变量 数学 运算
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...
- shell 变量赋值运算
.变量赋值: name=lbg 等号前后不能有空格 name="Lebron James" 变量值中有空格要用双引号 echo ${name} 用${}更保险 shopt -s - ...
- Shell基础之四 变量与运算
shell变量与运算 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不是$str. 变量数据的存储方式 ...
- 02 . Shell变量和逻辑判断及循环使用
Shell变量 系统变量 在命令行提示符直接执行 env.set 查看系统或环境变量.env 显示用户环境变量,set 显示 Shell预先定义好的变量以及用户变量.可以通过 export 导出成用户 ...
- 利用CMD查看系统硬件信息
利用CMD查看系统硬件信息对于在windows下查看系统信息大家一定不陌生了,我现在说几个最常用的方法,对命令感兴趣的朋友看看,(给菜鸟看的,老手就不要笑话我了,大家都是从那个时候过来的,^_^).一 ...
- (转)IBM AIX系统硬件信息查看命令(shell脚本)
IBM AIX系统硬件信息查看命令(shell脚本) 原文:http://blog.itpub.net/22085031/viewspace-1054015/ 查看IBM AIX系统的主机型号.序列号 ...
- Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...
- Shell脚本编程(二):shell变量
定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...
随机推荐
- 使用 ibatis 处理复杂对象数据关系的实例
如何使用 ibatis 处理复杂对象数据关系 iBatis 是一个开源的对象关系映射程序,其工作是将对象映射到 SQL 语句.和其它 O/R Mapping 框架不同,iBatis 开发者需要自己编写 ...
- 使用SpringSecurity3实现RBAC权限管理
1. What? 什么是权限管理? 具体可参见百度:http://baike.baidu.com/view/2108713.htm 名词备注: 数据级权限:百科内的权限管理一文解释的比较不错,但其中的 ...
- JDocumentEditor
package infonode; /** * * @author sony */ //JDocumentEditor.java import java.awt.*; import java.awt. ...
- 安卓抓包之SocksDroid
之前一直使用电脑端的Charles代理软件, 然后手机端WiFi代理设置为Charles的代理ip与端口, 也就是8888 但是发现有些软件的请求包是抓取不到的, 于是查看apk源码发现发送网络请求使 ...
- 工作流调度系统之DolphinScheduler
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 我这 ...
- EasyExcel => EasyExcel-Plus => FastExcel
目录 什么是 FastExcel 主要特性 适用场景 结论 导航 快速开始 EasyExcel 与 FastExcel 的区别 EasyExcel 如何升级到 FastExcel 1. 修改依赖 2. ...
- a标签与Blob下载文件的区别和获取文件下载进度
文件下载的几种方式. 大家都做过文件下载,无非就是通过a标签给定一个href. 用户点击下载按钮. 或者使用Blob的方式进行下载. 这两种是很常见的,也是我们平时做使用最多的方式. 那么我们知道这2 ...
- c#之示波器功能
c#上位机:示波器功能 好久没有更新了,因为最近主要学习了如何用c#去做一个示波器功能,这里的示波器主要是用于单片机的调试.下面,我主要分享一下我做示波器的一些心得: 我这里示波器是用winform做 ...
- Linux编译安装MySQL__5.7.26记录
系统:centos7.4(3.10内核) 1.查找并清除自带的数据库# rpm -qa | grep mariadb# rpm -e --nodeps mariadb-libs-5.5.44-2.el ...
- linux web终端wetty食用方法
学校有些机房电脑性能贼垃但又不得不去那些机房上课 我也不想带电脑,于是弄台廉价的服务器 本来想拿个公网ip配frp连我电脑完事 想到vim是在终端中运行的编辑器 于是想弄个web终端然后就找到了wet ...