linux下数学运算器:expr命令(shell中完成数学运算)
expr用法
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr也是一个手工命令行计数器。
$expr 10 + 10
20
$expr 1500 + 900
2500
$expr 30 / 3
10
$expr 30 / 3 / 2
5
(注意运算符左右都有空格)
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
$expr 30 * 3
90
17.5.1 增量计数
expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。
$LOOP=0
$LOOP=`expr $LOOP + 1`
17.5.2 数值测试
可以用expr测试一个数。如果试图计算非整数,将返回错误。
$rr=1.1
$expr $rr + 1
expr: non-numeric argument
$rr=2
$expr $rr + 1
3
(注意:这个例子与原文不同)
这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入dev/null,
然后测试最后命令状态,如果为0,证明这是一个数,其他则表明为非数值。
$value=12
$expr $value + 10 > /dev/null 2>&1
$echo $?
0
这是一个数。
$value=hello
$expr $value + 10 > /dev/null 2>&1
$echo $?
2
这是一个非数值字符。
expr也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成
功返回1,任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为
“hello”和“hello”。
$value=hello
$expr $value = "hello"
1
$echo $?
0
expr返回1。不要混淆了,这表明成功。现在检验其最后退出状态,返回0表示测试成功,
“hello”确实等于“hello”。
17.5.3 模式匹配
expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任
何字符重复0次或多次。
$value=accounts.doc
$expr $value : '.*'
12
在expr中可以使用字符串匹配操作,这里使用模式. d o c抽取文件附属名。
$expr $value : '(.*).doc'
accounts
=============================
请问各位大虾:shell 中有数组吗?
当然有,用
$varname[0]=value1
$varname[1]=value2
....
来定义
用
$echo ${varname[0]}
方式来引用
本文来源:http://linux.sheup.com/linux/linux5554.htm
linux下数学运算器:expr命令(shell中完成数学运算)的更多相关文章
- Shell编程——Shell中的数学运算
在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...
- linux下软件的更新命令
linux下软件的更新命令 在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区 ...
- 【转】Linux下patch打补丁命令
[转]Linux下patch打补丁命令 转自:http://www.cnblogs.com/noaming1900/archive/2010/10/28/1863282.html 此命令用于为特定软件 ...
- linux下mysql操作的命令
最近在学习mysql,还是只菜鸟,找到下面篇文章对初学者挺有用的,所以共享下 1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql star ...
- Linux下su与su -命令的区别
在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命令了. 原因: su命令和su -命令 ...
- Shell脚本笔记(三)shell中的数学计算
shell中的数学计算 一.使用方括号 #!/bin/bash a= b= c= res=$[$a * ($c-$b)] echo $res 二.使用(()) +)) ((i=+)) b=$((-*) ...
- Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程
Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程 原因: 一般造成这种原因是因为项目中有非守护线程的存在: 解决方案: 一.从Tomcat上解决 方案1:(推荐的方案:因为一台 ...
- Linux下查看进程的命令输出的内容解释
Linux下查看进程的命令输出的内容解释 ps (process status) ps -e 或者ps -A (-e和-A完全一样) PID TTY TIME ...
- 20145239 Linux下常用的ls命令总结
20145239 Linux下常用的ls命令总结 通过学习本周的教学视频和要求掌握的内容,发现ls命令被使用的次数非常多,但作为一个初学者,可能我只会ls或者顶多ls -l两种用法.但其实ls是一个非 ...
- Linux下vi替换字符命令操作实例
在Linux下的开发中,经常涉及到对文件里的字符进行处理,当中,对字符的替换操作也是非常的频繁. 本文以一个实际的文件为例,具体介绍了Linux下经常使用的vi替换字符命令,为相关的开发工作提供给了參 ...
随机推荐
- 【java集合系列】---HashSet
在前面的博文中,小编主要简单介绍了java集合中的总体框架,以及list接口中典型的集合ArrayList和LinkedList,接着,我们来看set的部分集合,set集合和数学意义上的集合没有差别, ...
- [LaTeX] box algorithm adjustbox subfigures, textwidth
algorithm \begin{figure}[!t] \vspace*{\dimexpr\fboxsep+\fboxrule} \fbox{% \parbox{\dimexpr\linewidth ...
- ZooKeeper之(一)ZooKeeper是什么
1.1 产生背景 当今是个分布式.集群.云计算等名词满天飞的时代.造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群.服务集群对外提供服务的过 ...
- Android广播的发送与接收
Android广播的发送与接收 效果图 广播发送 广播分为有序广播和无序广播 有序广播与无序广播的区别 无序广播:只要是广播接收者指定了接收的事件类型,就可以接收到发送出来的广播消息.不能修改消息. ...
- Scala:函数和闭包
http://blog.csdn.net/pipisorry/article/details/52902271 Scala函数 Scala 有函数和方法,二者在语义上的区别很小.Scala 方法是类的 ...
- linux中 probe函数的何时调用的?
点击打开链接 linux中 probe函数何时调用的 所以的驱动教程上都说:只有设备和驱动的名字匹配,BUS就会调用驱动的probe函数,但是有时我们要看看probe函数里面到底做了什么,还有传递给p ...
- Spark-1.6.0之Application运行信息记录器JobProgressListener
JobProgressListener类是Spark的ListenerBus中一个很重要的监听器,可以用于记录Spark任务的Job和Stage等信息,比如在Spark UI页面上Job和Stage运 ...
- CoreText精彩文字轮廓绘制动画的一点改进
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原文在: http://oleb.net/blog/2010/ ...
- x264源代码简单分析:滤波(Filter)部分
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- iOS9中如何在日历App中创建一个任意时间之前开始的提醒(三)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 四.创建任意时间之前开始的提醒 现在我们找到了指定源中的指定日 ...