在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作。

先说四则运算,在Shell中四则运算不能简简单单的加减乘除,应该要写如下的格式:

$val1=`$val2 - 1`

其中“=”后面用“`”包住表达式,这个符号在Shell中十分有用,是Tab键上面“~”的原来形式。可以用来将很多命令的结果保存到一个变量中去。接着就是运算符了,运算符的左右两边必须是空格,否则会出错。

接着是强大的字符串操作:

提取指定字符的下标:expr index 内容 字符,例如:$ind=`expr index "$content" "="`

提取字符串的子串:expr substr 内容 起始位置 终点位置,例如:$con=`expr substr "$content" "1" $ind

----------------------------------------------

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

数值测试

可以用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”。

模式匹配

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]}

方式来引用

从位置处抓取字串

shell>> expr substr "this is a test" 3 5

is is

数字串 only the first character

shell>> expr index "testforthegame" e

2

字串真实重现

shell>> expr quote thisisatestformela

thisisatestformela

-----------------------------------------------

expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。

–格式为:

expr Expression(命令读入Expression 参数,计算它的值,然后将结果写入到标准输出)

–参数应用规则:

用空格隔开每个项;

用 \ (反斜杠) 放在 shell 特定的字符前面;

对包含空格和其他特殊字符的字符串要用引号括起来

–expr用法实例讲解:

(1)、计算字串长度

[[email protected] bkeep]# expr length "bkeep zbb"   //包含空格在内

9

(2)、抓取字串

[[email protected] bkeep]# expr substr "bkeep zbb" 4 9

ep zbb

(3)、抓取第一个字符数字串出现的位置

[[email protected] bkeep]# expr index "bkeep zbb" e

3

(4)、整数运算

[[email protected] bkeep]# expr 14 % 9

5

[[email protected] bkeep]# expr 30 / 3 / 2  //运算符与数字间一定要有空格

5

(5)、增量计数

说明:expr在循环中用于增量计算。先将变量初始化为0,然后循环值加1,反引号的用法为命令替代。

> LOOP=0

> LOOP=`expr $LOOP + 1`

(6)、数值测试

说明:用expr测试一个数。如果试图计算非整数,则会返回错误。

> rr=3.4

> expr $rr + 1

expr: non-numeric argument

> rr=5

> expr $rr + 1

6

(7)、模式匹配

说明:expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。

.* 意即任何字符重复0次或多次。

[[email protected] bkeep]# expr bkeep.doc : ‘.*‘

9

(8)在expr中可以使用字符串匹配操作,这里使用模式抽取.doc文件附属名。

[[email protected] bkeep]# expr bkeep.doc : ‘\(.*\).doc‘

bkeep

linux shell比大小expr,Linux shell命令中expr(示例代码)相关推荐

  1. linux la 的使用方法,Linux简介及常用命令使用4--linux高级命令与技巧(示例代码)

    top 几个磁盘 fdisk -l 磁盘空间 df -lh df -al 查看进程:ps -ef"grep java 杀死进程:kill -9 进程号 more中过滤 more xxx |g ...

  2. linux icon图标大小,适用于Linux的5款最佳桌面图标集

    大多数 Linux 桌面用户都喜欢安装各种主题或者是图标来定制美化自己的 Linux 桌面,我们之前也曾专门介绍过 Numix 主题与 Xenlism WildFire 主题的安装教程,本文我们来放个 ...

  3. linux之路由知识之ip route 命令中的疑惑

    1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...

  4. linux gdb打印地址的值,gdb命令中查看地址之x命令

    可以使用examine命令(简写是x)来查看内存地址中的值.x命令的语法如下所示: x/ n.f.u是可选的参数. n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元 ...

  5. df命令能够实现linux系统磁盘管理中,Linux_linux磁盘命令中df命令的作用,linux磁盘命令中df命令的使用, - phpStudy...

    linux磁盘命令中df命令的作用 linux磁盘命令中df命令的使用,系统管理员想要知道df命令的功能,看完本文相信您能得到一个满意的答案.磁盘配额:问题是他们没有表达同时想获得磁盘配额管理工具的愿 ...

  6. 传递命令行参数示例代码 (C 和 Python)

    C语言 在 C 语言中, 使用 main 函数的输入参数 argc 和 argv 传入命令行参数. argc 为 int 类型, 表示传入命令行参数的个数 (argument count); argv ...

  7. linux shell字体大小,改变Linux Shell中的字体和背景颜色

    使用Linux的朋友一定熟悉文本界面上的黑底白字和X上的白底黑字,这两种颜色可以说是经典的搭配,清晰明了.但是你也可以根据自己的喜好使字体和背景换个颜色. 下面我介绍一下RedHat的字体和背景颜色的 ...

  8. Linux按压缩率大小排序,Linux下常用压缩 解压命令与压缩比率对比

    常用的格式有: tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar 只是打包动作,相当于归档处理,不做压缩:解压也一样 ...

  9. Linux按压缩率大小排序,Linux下经常使用压缩 解压命令和压缩比率对比

    经常使用的格式有: tar, tar.gz(tgz), tar.bz2, 算法 不一样方式,压缩和解压方式所耗CPU时间和压缩比率也差别也比较大.测试 1. tar 只是打包动做,至关于归档处理,不作 ...

最新文章

  1. openwrt+linux编译,openwrt x86 编译部署
  2. activity的使用(八):生命周期
  3. 数字图像处理:基于MATLAB的车牌识别项目
  4. 【转】C#格式化字符串
  5. SVN 集中式版本管理工具
  6. auot lisp 选择集处理_离散量的计算机处理63_1Cv6
  7. dbentry访问带密码的Access
  8. 今天遇到个超郁闷的问题
  9. 通讯工程考研考计算机专业跨度大么,通信工程专业,与自动化专业差别大吗?考研可以跨考吗?...
  10. 线性代数 (二): 证明 A^T 乘以 A 为半正定矩阵
  11. 机器学习之分类算法--mnist手写体识别
  12. 官方VM tools下载地址
  13. Tomcat服务器response header 200 OK问题
  14. 02. Yii 2.0 框架的目录结构
  15. canvas 将两张图片叠加
  16. LTU、TTU、DTU、FTU、RTU在电路中的安装位置,功能,区别
  17. nginx服务器中url重写rewrite参数和例子
  18. C# 定时任务 调度框架 WebWork (Quartz.NET) Web版的Windows服务
  19. 【航天远景 MapMatrix 精品教程】04 Metashape空三导入MapMatrix
  20. java 数据类型cher,java期末考试题96534-(20008)

热门文章

  1. R730服务器热插拔换磁盘(raid阵列)
  2. Solution for Archmage(大法师)Visual Judge (Set 3)
  3. 操作系统内存管理之虚拟内存
  4. Python数据分析之:pandas拓展数据分析函数(cum / rolling ) / 作图功能
  5. Android Uri.parse的详细资料
  6. 图像拼接(一)——SIFT算法新手入门级介绍!!!
  7. 结构型设计模式 -- 适配器模式
  8. mybatis29道练习题
  9. 如何用神经网络去拟合一条曲线?
  10. 蓝桥杯刷题-FBI树