前言

有时,在处理命令行时(特别是在处理shell脚本时),您可能会发现自己处于必须执行搜索字符串中的子字符串,查找其索引以及其他内容,或者执行比较和算术运算等情况。上述问题expr都能帮我们解决。

expr(evaluate expressions)

语法

expr EXPRESSION
expr OPTION

参数

--help:打印帮助信息并退出

--version:打印版本信息并退出

典型用法

使用expr进行算术操作

expr ARG1 + ARG2

expr ARG1 - ARG2

expr ARG1 * ARG2

expr ARG1 / ARG2

expr ARG1 % ARG2

root@ubuntu:~# expr 10+2
10+2
root@ubuntu:~# expr 10-2
10-2
root@ubuntu:~# expr 10*2
10*2
root@ubuntu:~# expr 10 / 2
5
root@ubuntu:~# expr 10 % 2
0

View Code

这里*需要特别注意下,由于*时shell内置操作符,所以expr计算乘法时需要转义

root@ubuntu:~# expr 10 * 2
expr: syntax error
root@ubuntu:~# expr 10*2
10*2
root@ubuntu:~# expr 10\*2
10*2
root@ubuntu:~# expr 10 \* 2
20

View Code

使用expr进行逻辑操作

注意:|、&、<、<=、!=都需要转义

ARG1 | ARG2

返回ARG1和ARG2中既不是null也不是0的哪个。如果ARG1和ARG2都满足要求,则返回第一个。

注意:|也需要使用转义

root@ubuntu:~# export a=0
root@ubuntu:~# export b=5
root@ubuntu:~# expr $a \| $b
5
root@ubuntu:~# export a=10
root@ubuntu:~# export b=5
root@ubuntu:~# expr $a \| $b
10

View Code

ARG1 & ARG2

ARG1和ARG2都不是null 或 0时,返回ARG1。ARG1和ARG2中至少有一个时null 或 0时时,返回0

注意:&也需要使用转义

root@ubuntu:~# export a=10
root@ubuntu:~# export b=0
root@ubuntu:~# expr $a \& $b
0
root@ubuntu:~# export a=0
root@ubuntu:~# export b=10
root@ubuntu:~# expr $a \& $b
0
root@ubuntu:~# export a=10
root@ubuntu:~# export b=5
root@ubuntu:~# expr $a \& $b
10

View Code

ARG1 < ARG2

root@ubuntu:~# export a=10
root@ubuntu:~# export b=5
root@ubuntu:~# expr $a \< $b
0
root@ubuntu:~# expr $b \< $a
1

View Code

ARG1 <= ARG2

root@ubuntu:~# export a=10
root@ubuntu:~# export b=5
root@ubuntu:~# expr $a \<= $b
0
root@ubuntu:~# expr $a \<= $b+5
1
root@ubuntu:~# expr $a \<= $b+6
1

View Code

ARG1 = ARG2

root@ubuntu:~# export a=10
root@ubuntu:~# export b=10
root@ubuntu:~# expr $a = $b
1
root@ubuntu:~# expr $a \= $b
1
root@ubuntu:~# expr $a \= $b+1
0
root@ubuntu:~# expr $a = $b+1
0

View Code

这个还比较奇怪,=使用转义也可以,不使用也可以

ARG1 != ARG2

ARG1 >= ARG2

ARG1 > ARG2

使用expr进行字符串相关操作

expr命令还允许您执行多个与字符串相关的操作。例如,要查找字符串的长度,可以按以下方式使用该工具:

计算字符串长度

注:包含空格时需要转移

root@ubuntu:~# expr length hello
5
root@ubuntu:~# expr length hello\ world
11

View Code

提取给定字符串中的子字符串

语法:expr substr [string] [pos] [length]

root@ubuntu:~# expr substr we\ are\ family 8 6
family

View Code

查找给定字符串中一组字符的起始位置

语法:expr index [string] [chars]

root@ubuntu:~# expr index RNG\ NB NG
2

View Code

转载于:https://www.cnblogs.com/kelamoyujuzhen/p/9821785.html

Linux命令——expr相关推荐

  1. expr命令 linux,Linux中expr命令起什么作用呢?

    摘要: 下文讲述Linux中expr的功能说明,如下所示: expr(是expression的英文缩写)--即:表达式 expr命令功能: 用于计算各种数据, 它是一个命令行式的计算器 用于linux ...

  2. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  3. awk截取字符命令_Linux运维基础技能: 脚本编程与Linux命令

    本系列文章一共三篇,分别为<脚本编程与 Linux 命令>.<接入层与网络基础>和< MySQL 与 SQL 优化>,由腾讯高级工程师 luaruan(阮永顺) 原 ...

  4. Linux命令技巧之30个必会的命令技巧

    在Unix/Linux下,高效工作方式不是操作图形页面,而是命令行操作,命令行意味着更容易自动化.使用过Linux系统的朋友应该都知道它的命令行强大之处.本文讲述了Linux下的查找,删除,打包,解压 ...

  5. linux shell expr 使用

    linux shell expr 使用 收藏人:春秋百味 2014-03-21 | 阅: 转: | | 分享 非原创, 摘自:<LINUX与UNIX Shell编程指南>17.5 expr ...

  6. linux命令 正则表达式,详解Linux命令中的正则表达式

    详解Linux命令中的正则表达式 Mark Do 2017年9月19日 暂无评论 阅读 981 次 命令中的正则表达式 如果要在命令输出或文本中筛选内容时使用模糊查找,就需要使用正则表达式.正则表达式 ...

  7. Linux命令行与Shell脚本编程大全读书笔记

    Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab   管理系统开机时会自动启动的进程 2./etc/init. ...

  8. Linux命令三剑客:grep、sed、awk总结

    文章目录 前言 一.grep 命令语法 实例 grep结合pattern正则 二.sed 命令语法 案例 三.awk 命令语法 实例 前言 最近看到了几篇关于linux命令grep.sed.awk的文 ...

  9. linux查看执行过的命令行,在Linux命令终端中查看和编辑曾执行过的命令 – LINUX笔记 – CFEI.NET...

    今天我们来讲讲linux的知识,积累的这些知识就是我们以后的财富,各位加油. 因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正.一切为了知识的分享. history 命令 ...

最新文章

  1. 线段树 (经典题目合集)
  2. C/C++连接MySql数据库
  3. ps -ef和ps aux的区别
  4. 全面讲解Python字典;--什么是字典?字典的常用方法;创建空字典并赋值,增删改查字典中的元素
  5. givemesomecredit数据_你是如何走上数据分析之路的?
  6. 新手AS常见问题集锦
  7. 汇编语言hello word!
  8. idea中java文件怎么运行_Java入门基础篇-如何在Java中创建只读文件
  9. 算法应用一:【指纹识别】+【图像分割】一种面向“感兴趣区域”的指纹图像分割算法
  10. 手机访问电脑文件_手机直接访问电脑文件,不用数据线,方便快速
  11. python 仪表盘实现_Python实现数据可视化看如何监控你的爬虫状态【推荐】
  12. stl中auto_ptr,unique_ptr,shared_ptr,weak_ptr四种智能指针使用总结
  13. 优化三维空间定位法及C语言快捷实现
  14. Spring Boot实现QQ邮件发送,用户注册功能——前后端分离版
  15. unity检测范围内敌人_Unity判断周围是否有敌人
  16. 【OS学习笔记】二 汇编语言和汇编软件
  17. java中的example_GitHub - lilei644/spring-java-example: 记录开发以及学习过程中Spring、Java相关的示例...
  18. 古代帝王有哪些“恩爱夫妻”?
  19. C# Event Action与Invoke
  20. 163邮箱开启SMTP权限

热门文章

  1. 区块链:这项颠覆性技术将如何改变未来
  2. **Python垃圾回收机制
  3. Oracle计划新的移动OpenJDK项目
  4. Mac OSX 10.9下apache+php+mysql的配置
  5. 信息检索技术——布尔检索
  6. 客户区和非客户区指的什么?窗口客户区和视图客户区的区别
  7. 第一代计算机到第四代计算机基本知识,[Ch01_计算机系统基本知识.ppt
  8. lua如何判断是否支持cookie_如何判断家里暖气片是否需要更换
  9. 多线程及相关面试题与拓展
  10. Oracle数据库设计规范