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" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...
随机推荐
- 面向 Java 开发人员的 Scala 指南: 构建计算器,第 1 部分
Scala 的 case 类和模式匹配 Ted Neward, 主管, Neward & Associates 简介: 特定于领域的语言已经成为一个热门话题:很多函数性语言之所以受欢迎,主要是 ...
- Python之读写Excel
现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上). Python处理Excel文件主要是第三方模块库xlrd.xlwt.pyexcel-xls ...
- SQL Server数据表模糊查询(like用法)详解
在SQL Server Management Studio (SSMS) 中,进行模糊查询主要是通过使用like操作符来实现的.like操作符用于在where语句中搜索列中具有指定模式的数据.我们在简 ...
- Javascript之常用尺寸、位置获取
标签: js 缘起 平时在开发中或多或少需要去获取元素尺寸,特此记录常用的尺寸获取方案. 常用相关尺寸 窗口可视尺寸 测试地址 /** * 获取窗口可视尺寸 */ function getWindow ...
- JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升
作为一位前端开发者,我们经常会听到这么一句话:"JavaScript的执行是按照顺序自上而下依次执行的."这句话说的并没有错.但是它似乎又好像不完全对.我们先来看以下这段代码.你觉 ...
- python读取pdf
1. vscode 安装python插件 2. vscode 终端安装pdfminer.six , pdfplumber python -m pip install pdfminer.six pyth ...
- PostgreSQL 的历史
title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功 ...
- Base58在java程序中应用
Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址. 相比Base64,Base58不使用数字"0",字母大写"O" ...
- 【转载】Spring Cloud Gateway监控
http://www.imooc.com/article/290822 欢迎加入Spring Cloud Gateway监控豪华套餐-- 只要为Spring Cloud Gateway添加Spring ...
- RxSqlUtils(base R2dbc)
一.前言 随着 Solon 3.0 和 Solon-Rx 3.0 发布,又迎来了的 RxSqlUtils 扩展插件,用于"响应式"操作数据库.RxSqlUtils 是基于 R2db ...