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" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...
随机推荐
- Python:pygame游戏编程之旅六(游戏中的声音处理)
一款人性化的游戏中缺少不了声音,比如角色挂时惨叫一声,或PK时武器交锋的声音,还有就是英雄出场时的背景音乐,无不涉及到声音,本节我们就来看一下pygame中如何控制声音,下面是一个例子,但博客上传不了 ...
- Redis常见问题汇总
日常使用中Redis中配到的问题汇总 1. RedisDesktopManager提示:Connection error: QRedisClient compiled without ssh supp ...
- monitor磁盘空间不足警告
虚拟机安装ceph时,执行ceph -s monitor主机遇到了 mon c101(monitor主机名) is low on available space 错误 这是我找到的解决办法 monit ...
- python拉取grafana监控图形
python拉取grafana监控图形 python通过grafana提供的api接口拉取grafana监控图形并保存至word文档生成日报发送邮件 前置条件: 1.grafana平台需要安装graf ...
- Qt 子窗口 隐藏标题栏的图标,在任务栏上的不显示
Qt子窗口使用Qt::Dialog样式时,隐藏窗口标题栏图标方法: this->setWindowIcon(QIcon()); Qt子窗口,在任务栏上的不显示,最简单的方法是设置Qt::Tool ...
- R数据分析:网状meta分析的理解与实操
meta分析之前有给大家写过,但是meta分析只能比较两个方法.经常是被用来证明在现有研究中显示矛盾结果的干预方法到底有没有效的时候使用,通过证据综合得到某种干预到底有没有用的结论.但是如果我要证明好 ...
- 使用 VS Code 徒手构建 PDF 文件
使用 VS Code 徒手构建 PDF 文件 PDF 文件是广泛应用的页面描述文件格式,从本质上讲,文件内部的结构混合使用了文本格式描述和二进制格式描述,对于简单的文件,比如说我们今天要创建的第一个 ...
- Android7 以上https抓包(无需root)- virtualXposed + justTrustMe
参考资料: https://www.cnblogs.com/boycelee/p/13418371.html 1. virtualXposed下载地址 https://github.com/andro ...
- Qt编写的项目作品15-皮肤生成器+UIDemo
一.功能特点 自带17套精美皮肤样式,其中包括黑色.灰色.扁平等. 皮肤生成器只需要简单几步就可以生成一套自定义的皮肤. 自带了26种uidemo,非常漂亮美观,涵盖了主界面布局.菜单切换等各种效果, ...
- 这是我见过最通俗易懂的SVD(奇异值分解)算法介绍
线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用. SVD是最广泛使用的无监督学习算法之一,它 ...