关于bc,expr在shell里面的运用

shell中计算命令详解(expr、(())、 $[]、let、bc ) 双小括号(()),用于进行数学运算表达式的执行,将数学运算表达式放在((和))之间。可以使用$获取(())表达式命令的结果,这和使用$获得变量值是一样的。let赋值最方便(())直接求值输出最方便,且支持多表达式同时运算expr优点可以直接输出缺点计算表达式里面引用变量使用$,特殊字符需要转义只能计算一个表达式(())优点直接输出,里面直接使用变量名,特殊字符不需要转义,多个表达式赋值,可进行多表达式同时i计算,使用”,“互相分开缺点。...... 阅读详情

http://blog.youkuaiyun.com/linco_gp/article/details/4517945

关于bc不得不说两句,我们可以发现利用参数scale=2,虽然可以保留小数点后面的两位,但是如果前面的整数位是0,则没有显示出来,只是.XX

这里我们有个方法可以让其显示出0

SYS=`expr "scale=2;a=1/2;if(length(a)==scale(a)) print 0;print a" | bc -l`

 

Linux中time命令,我们经常用来计算 某个程序的运行耗时(real), 用户态cpu耗时(user), 系统态cpu耗时(sys)。

例如:
$ time foo
real        0m0.003s
user        0m0.000s
sys         0m0.004s$

那么这三个时间都具体代表什么意思呢?

[1] real : 表示foo程序整个的运行耗时。可以理解为foo运行开始时刻你看了一下手表,foo运行结束时,你又看了一下手表,两次时间的差值就是本次real 代表的值

举个极端的例子如下:可以看到real time恰好为2秒。
# time sleep 2

real 0m2.003s

user 0m0.000s

sys 0m0.000s

[2] user 0m0.000s:这个时间代表的是foo运行在用户态的cpu时间,什么意思?

首先,我来讲一下用户态和核心态:

核心态(Kernel Mode):

在内核态,代码拥有完全的,不受任何限制的访问底层硬件的能力。可以执行任意的CPU指令,访问任意的内存地址。内核态通常情况下都是为那些最底层的,由操作系统提供的,可信可靠的代码来运行的。内核态的代码崩溃将是灾难性的,它会影响到整个系统。

—– In Kernel mode, the executing code has complete and unrestricted access to the underlying hardware. It can execute any CPU instruction and reference any memory address. Kernel mode is generally reserved for the lowest-level, most trusted functions of the operating system. Crashes in kernel mode are catastrophic; they will halt the entire PC.

用户态(User Mode):

在用户态,代码不具备直接访问硬件或者访问内存的能力,而必须借助操作系统提供的可靠的、底层的API来访问硬件或者内存。由于这种隔离带来的保护作用,用户态的代码崩溃(Crash),系统是可以恢复的。我们大多数的代码都是运行在用户态的。

—– In User mode, the executing code has no ability to directly access hardware or reference memory. Code running in user mode must delegate to system APIs to access hardware or memory. Due to the protection afforded by this sort of isolation, crashes in user mode are always recoverable. Most of the code running on your computer will execute in user mode.

为什么要区分Kernel Mode 和 User Mode呢?答案是隔离保护,使得系统更稳定。

好,讲完用户态和核心态之后,我们来看user time。我们已经说过了,这个指的是程序foo运行在用户态的cpu时间,cpu时间不是墙上的钟走过的时间,而是指CPU工作时间。

[3] sys 0m0.004s : 这个时间代表的是foo运行在核心态的cpu时间。


好,讲完上面的这些,我们来看看这三个的关系,这三者之间没有严格的关系,常见的误区有:

误区一: real_time = user_time + sys_time

我们错误的理解为,real time 就等于 user time + sys time,这是不对的,real time是时钟走过的时间,user time 是程序在用户态的cpu时间,sys time 为程序在核心态的cpu时间。

利用这三者,我们可以 计算程序运行期间的cpu利用率如下:

%cpu_usage = (user_time + sys_time)/real_time * 100%

如:

# time sleep 2

real 0m2.003s

user 0m0.000s

sys 0m0.000s

cpu利用率为0,因为本身就是这样的,sleep 了2秒,时钟走过了2秒,但是cpu时间都为0,所以利用率为0

误区二:real_time > user_time + sys_time

一般来说,上面是成立的,上面的情况在单cpu的情况下,往往都是对的。

但是在多核cpu情况下,而且代码写得确实很漂亮,能把多核cpu都利用起来,那么这时候上面的关系就不成立了,例如可能出现下面的情况,请不要惊奇。

real 1m47.363s

user 2m41.318s

sys 0m4.013s

 

Abaqus滞回问题求解—浆锚连接装配式剪力墙滞回模拟 当下土木工程研究生,多数都在从事装配式混凝土构件安全或装配式混凝土构件连接节点力学性能的研究。研究这类问题,几乎脱离不开对有限元软件的使用,Abaqus求解能力非常强大,但模型处理能力相对较弱。装配式混凝土结构的有限元计算与传统现浇结构相比,其节点处理起来相对复杂,计算结果往往需要凸显出连接节点力学特性,所以对建模精程度的要求较高。所以向大家介绍一款工具—HyperMesh软件(一下简称Hm),它是专业的有限元前处理工具,用于处理装配式混凝土构件或连接节点有限元模型比较合适。这篇文章主要介绍如何利用Hm处理 阅读详情

相关推荐

Ansys-结构动力学分析-圆柱斜齿轮模态分析学习心得

模态分析的步骤基本一直,不同点在于选择什么单元类型,模型,节点约束等 圆柱斜齿轮模态分析的难点在于圆柱斜齿轮的模型建立,和所要约束的节点的选择。 用命令流方法建立齿轮模型效率较高,当然,在ansys里建立复杂的模型实在不敢恭维,对于自下而上建模,需要知道每个关键点的坐标位置。下图是创建圆柱斜齿轮模型的命令流方式。 模型不同使用的数据也就不同了。 对于施加约束的问题这就必须要熟悉select e...

weixin_45385183的博客 1831

【转】理解linux time命令的输出

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33924312的博客 336

健康保险费用预测:可解释机器学习在精算建模中的实战落地

健康保险费用预测是医疗AI与保险科技交叉领域的核心任务,本质是基于临床变量与社会因素对个体医疗支出进行风险量化。其技术原理需兼顾统计建模能力与监管可解释性,XGBoost+SHAP组合因支持特征归因、边际效应分析和临床可干预推演,成为保险精算场景的主流选择。该技术显著提升保费定价精度、降低偿付风险,并支撑DRG费用预警、团险核保辅助及再保险尾部风险评估等关键应用。本文聚焦真实产线中的时间序列验证、临床分层特征工程与监管红线指标(如Bias@90th、Calibration Slope),深入解析如何让模型不

weixin_33702545的博客 306

shell除法计算

shell计算中使用除法,基本默认上都是整除。 比如: num1=2 num2=3 num3=`expr $num1 / $num2` 这个时候num3=0 ,是因为是因为expr不支持浮点除法 解决的方法: num3=`echo "sclae=2; $num1/$num2" | bc` 使用bc工具,sclae控制小数点后保留几位 还有一种方法...

weixin_34025051的博客 4919

告别手动操作!用Python脚本批量处理Siemens NX零件文件(导入/导出/移除参数)

本文详细介绍了如何利用Python脚本实现Siemens NX零件文件的批量处理,包括导入、导出和移除参数等操作。通过NX Open API和Python UF接口,工业设计师可以大幅提升工作效率,告别繁琐的手动操作。文章提供了完整的实战指南,涵盖环境配置、核心功能实现以及性能优化技巧,特别适合需要进行Siemens-NXUG二次开发的工程师参考。

weixin_28222493的博客 260

report_delay_calculation/check_timing/report_annotated_parasitics/report_analysis_coverge

如何debug 一颗cell 或一段net 的delay, 常用的办法是用report_delay_calculation 报这颗cell 或这段net, 会得到形式如下的report, 从该report 中可以得到: 表头需要特别关注的是command, 确定report 的对象及加的option; From/To pin: cell 的input pin 和...

diedai7174的博客 1798

2021-07-26

5.9 测定代码执行时间 R提供了两种评估代码性能的方法,一是使用system.time()输出函数运行时间输出,二是使用Rprof()函数生成更精细的评估报告。 5.9.1 测定命令语句执行时间 system.time()用于测定参数给出命令的执行时间 #测定代码执行时间# #计算1~n数字之和 sum_to_n <- function(n) { sum <- 0 for (i in 1:n) { sum <- sum + i } return(sum) } s

qq_39412346的博客 495

[小技巧] 如何复制知乎电子书中的文字和图片

文章目录一、背景二、复制文字1.最简单的方法(适合短小文字)2. 进阶方法(适合大段文字)三、复制图片四、注意事项 一、背景 有时候希望从书中摘录一部分文字作为笔记,但是知乎电子书阅读时候是禁止copy的,要么手打,要么OCR,给学习带来了一些不便。 审查元素后发现,知乎电子书是把文字分成一段一段的,试图F12直接copy不太方便。 本问将以谷歌Chrome浏览器为例,给出复制小技巧。 二、复制文字 1.最简单的方法(适合短小文字) 选中你需要的文字,左键单击不放,直接拖到地址栏。 然后可以从地址栏中

江南蜡笔小新 9246

Shell整数和小数运算

在 Shell 脚本中,执行小数运算通常需要使用 bc 命令,它是一个用于数学计算的命令行工具,支持小数运算。

Lzcsfg的博客 1610

深入解读WT软件湍流强度计算与分析

深入解读WT软件湍流强度计算与分析

weixin_46713695的博客 1021

21天学会PCIe专栏(4.3)--PCIe配置方法

通过本节的学习,你应该对PCIe配置方法有了更深入的了解。软件配置方法包括直接访问和间接访问,可以通过特定的I/O指令或系统调用进行配置。硬件配置方法包括通过BIOS/UEFI设置和跳线设置,可以根据需要修改PCIe设备的配置参数。

xiaoheshang_123的博客 722

linux 脚本反引号,linuxSHELL学习之反引号、expr、bc

一、反引号反引号允许将shell命令的输出赋值给变量。[root@t1 ~]# testing=`date`[root@t1 ~]# echo $testing2012年 07月 03日 星期二 20:09:06 CST[root@t1 ~]# testing=`date +%y%m%d` ---使用两位数字来显示年、月、日[root@t1 ~]# echo $testing120703[roo...

weixin_39526872的博客 194

微信小程序视频内容服务类目审核不过?绕过审核的两种思路!

虽然不推荐绕过官方审核,但在实际项目中,总有一些特殊情况:比如,最近开发的小程序涉及视频播放,提交审核时,被官方要求补充“教育服务 - 在线视频课程”类目。但我们的内容只是车辆使用介绍,并非教育课程,无法提供相应资质。该怎么办?很多开发者发现,小程序开发不是最难的,审核才是最难的。 微信为了规避法律风险,要求某些功能必须提供资质。例如:然而,并不是所有公司都能轻松申请到这些资质,甚至有些资质根本不适用于我们的业务,导致审核卡住,无法上线。就像我遇到的这个问题,官方要求我们补充“在线视频课程”类目,但实际业务

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3246

Shell语法学习

shell脚本就是将完成所有的命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限。 一、如何书写一个shell脚本 二、如何运行一个shell脚本 三、shell中的特殊符号 四、shell中的管道运用 | 是shell中运用最多的,很多组合命令需要它来完成,管道其实就是上一个命令的输出,就是下一个命令的输入。 五、shell重定向 六、shell数学运算 要想让数学计算发挥作用,必须使用数学计算命令,Shell 中常用的数学计算命令如下表所示。 Shell (()) 双小括号

KevinChen2019的博客 272

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

11.5 构建基本的shell脚本之五(执行数学运算及退出脚本:涉及到expr、bc、exit等命令)

一、执行数学运算 1、expr命令 例: [root@CHENDAJIE ~]# expr 1 + 5 6 expr 命令可以识别少数的数学和字符串操作符,如下图: 书上列出的表格里面还有一些字符串匹配的,但是我现在并不是很了解,所以暂时没有列出来(详情请见223面) 如上图所示,expr已经足够支持大多数运算,但是在脚本或命令行使用是仍有时会出现问题。 例如: [root@CHENDAJI...

陈达杰的博客 290

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux shell 变量减法_Shell笔记2——变量数值计算

本文档主要讲解Shell变量的数值计算与实践基本大纲:1.算术运算符和命令介绍2.双小括号"(())"数值运算命令实践3.let运算命令的用法实践4.expr命令的用法实践5.bc命令的用法实践6.awk实现计算示例7.$[ ]符号的运算示例8.基于Shell变量输入read命令的运算实践一:算术运算符和命令介绍1、算术运算符算术运算符使用说明+、-加法(或正号)、减法(或负号)。*、/、%乘法、...

weixin_39633891的博客 2629

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Linux-shell-算术运算{expr、bc、dc、(( ))和[ ]}

转:http://www.cnblogs.com/snowsolf/p/3325235.html 在Linux下做算术运算时你是如何进行的呢?是不是还在用expr呢?你会说我还会bc还有其它的呢! 闲话不多扯,干正事! expr expr在使用中要注意一些书写,如表达式中量和运算符号之间的空格及一些运算符号需要转义,还有一点需要记住,expr只适用于整数之间的运算! ...

weixin_30952103的博客 285

shell--shell中的数学计算

shell中如何计算 默认情况下shell不能直接进行算术运算,必须使用数学计算命令 这是因为在Bash shell中每一个变量的值都是字符串,无论你有没有用引号,都会用引号进行存储。 (( ))整数计算 简单的数值计算 复杂的综合算术运算 逻辑运算 1真0假 自增/自减计算 多个表达式同时计算 let命令的整数数学运算 let和(( ))的用法类似 let和(( ))的区...

Aplox的博客 404

Linux shell编程基础(1) —— 构建基本的shell脚本

1、创建shell脚本文件以及执行shell脚本方法 (1)使用编辑器(如vim)创建一个文件test.sh,文件后缀为.sh。 (2)在第一行指定要使用的shell 格式如下 #!/bin/bash (3)将shell命令添加到创建的文件中,并保存退出 (4)执行脚本文件 在执行脚本文件之前要让shell找到我们创建的文件test。那么如何让shell找到我们的文件呢。通常用以下两种方法 a、将shell脚本文件所在的目录添加的PATH环境...

m0_60337039的博客 6927

shell 中数学计算总结

1)使用let var=1 let "var+=1" echo $var 输出结果为2,这次没有悲剧 注意: a)经我测试let几乎支持所有的运算符,在网上看到一篇文章说“let不支持++、--和逗号、(、)”,但经我测试自加、自减、以及括号的优先级都得到了很好的支持 b)方幂运算应使用“**” c)参数在表达式中直接访问,不必加$ d)一般情况下算数表达式可以

继续微笑lsj 817

shell脚本这一块/.

语法: wc 脚本名.sh ,输出行数、单词数、字节数等信息(如 wc test_0710.sh 显示 12 42 301 test_0710.sh ,即 12 行内容 ),可用于快速了解脚本规模。- 特点:作为计算器工具,弥补 expr 在复杂运算(如浮点运算)上的不足,脚本中可通过管道(如 echo "2.5 * 3" | bc )调用,拓展运算能力。- 示例: bash test_0710.sh 执行脚本,终端输出脚本内 echo 等命令结果。

2502_92639952的博客 964

shell中的运算符和指令汇总

在写shell脚本的过程中,我们经常会使用一些运算符和指令让我们的脚本更加简洁易懂。 运算符 + #加法 - #减法 * #乘法 / #除法 % #除法后的余数 ** #乘方 ++ #自加一 -- #自减一 < #小于 <= #小于等与 > #大于 >= #大于等与 = #等于 j+=i #j=j+i j*=i #j=j*i j/=i #j=j/i j%=i #j=j%i 运算指

Ctrl_C_V_的博客 217

shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原声的shell脚本不支持 数学计算,但是可以通过其他的命令来实现例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '): #!...

weixin_33834679的博客 65

linux~SHELL 中的运算

1:运算方式及运算符号 2:SHELL 中常用的运算命令 3:运算实例: (())运算: +=运算: expr运算: let和【】运算: bc运算:

WuXieDeXiaoGe的博客 220

详解shell中的运算符

上一篇文章我们着重学习了 ,shell中的执行流控制,本章我很学习和执行流控制相结合使用的运算符号与运算指令。到本章节讲完,我们shell部分的内容就基本结束了,shell脚本没有捷径可言,只有真正写的多了才能提升书写的速度及准确率,希望大家可以平常也找一些练习题提升自己书写shell脚本的能力。 计算cpu占用率 用shell脚本写一个倒计时

好久没说梦想的博客 663

linux中的数学运算

1. expr命令:处理部分数学运算,如下: expr 1 + 5 对于特殊字符,需要使用转义字符进行标注 expr 1 \* 5 shell脚本中使用expr var1=5 var2=6 var3=$(expr $var1 + $var2) echo $var3 2.使用方括号 [] var1=$[1 + 3] var2=$[2 + 5] var3=$[$var1 * $...

tuo20130907的博客 176
上一篇: 作图工具
下一篇: 关于python strip
database_system
博客等级 码龄15年 3粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值