1. 概念

expr(expression) 命令用于计算表达式的值。支持关系运算、算数运算、字符串匹配、截取、获取长度等相关运算。

只支持整数和字符串,不支持浮点数。若涉及浮点数的运算,可使用 bc 命令。

2. 语法

expr EXPRESSIONexpr OPTION

3. 选项说明

--help 显示帮助信息并退出--version 显示版本信息并退

4. 表达式说明

ARG1 | ARG2若 ARG1 的值不为 0 或者不为空,则返回 ARG1,否则返回 ARG2
ARG1 & ARG2若两边的值都不为 0 或都不为空,则返回 ARG1,否则返回 0
ARG1 < ARG2ARG1 小于 ARG2 返回 1 否则返回 0
ARG1 <= ARG2ARG1 小于或等于 ARG2 返回 1 否则返回 0
ARG1 = ARG2ARG1 等于 ARG2 返回 1 否则返回 0
ARG1 != ARG2ARG1 不等于 ARG2 返回 1 否则返回 0
ARG1 >= ARG2ARG1 大于或等于 ARG2 返回 1 否则返回 0
ARG1 > ARG2ARG1 大于 ARG2 返回 1 否则返回 0
ARG1 + ARG2计算 ARG1 与 ARG2 相加之和
ARG1 - ARG2计算 ARG1 与ARG2 相减之差
ARG1 * ARG2计算 ARG1 与ARG2 相乘之积
ARG1 / ARG2计算 ARG1 与 ARG2 相除之商,向下转换成整数
ARG1 % ARG2计算 ARG1 与ARG2 相除取余
STRING : REGEXP执行模式匹配。两端参数会转换为字符串格式,且第二个参数被视为正则表达式(GNU基本正则),它默认会隐含前缀"^"。随后将第一个参数和正则模式做匹配。如果匹配成功,且 REGEX 使用了 \( 和 \),则返回匹配到的内容,如果未使用 \( 和 \),则返回匹配的字符数。否则返回为 0
match STRING REGEXP等于 STRING : REGEXP
substr STRING POS LENGTH返回 STRING 中从 POS(从 1 开始) 开始长度最大为 LENGTH 的子串。如果 POS 或 LENGTH 为负数、0 或非数值,则返回空字符串
index STRING CHARSCHARS 中任意单个字符在 STRING 中最前面的字符位置。如果在 STRING 中完全不存在 CHARS 中的字符,则返回 0
length STRING字符串的长度
+ TOKEN将 TOKEN 解析为普通字符串,即使 TOKEN 是像 match 或操作符 / 一样的关键字
( EXPRESSION )表达式可以使用一对小括号括起来。注意表达式与括号间需要空格

注意
(1)很多操作符需要进行转义,比如大于号在 Shell 中用于重定向,使用大于号时需要转义 >;
(2)如果两个参数都是数字,那么比较就是算术运算,否则就是字典序。

5. 示例

(1)整数的算数运算。

expr 1 + 1
2expr 1 - 1
0expr 1 * 1
1expr 1 / 2
0expr 1 % 2
1

(2)整数的关系运算。

expr 1 \< 1
0expr 1 \<= 1
1expr 1 \> 1
0expr 1 \>= 1
1expr 1 = 1
1expr 1 != 1
0

(3)字符串的关系运算。

expr "abc" \< "acb"
1

(4)执行模式匹配,获取匹配正则的字符串或其长度。

expr "abcd" : "\(.bc\)"
abc# 不使用小括号获取匹配正则的字符串的长度
expr "abcd" : ".bc"
3

(5)截取子串。

expr substr "abcd" 1 3
abc

(6)获取字符串长度。

expr length "abcd"
4

(7)将 expr 中具有特殊意义的关键字强制解析为普通字符串并获取其长度。

expr length + "length"
6

(8)使用小括号,使得 expr 支持多个表达式。

expr 1 + \( 1 + 1 \)
3

linux基础49——expr相关推荐

  1. 大数据之Linux 基础

    Linux 基础 Linux 开始 虚拟机 Linux 准备工作 Linux 安装步骤 选择稍后安装 网络类型选择 NAT 修改最大磁盘大小(这里最大磁盘大小指给虚拟机分配的,但不真正使用不是这么多) ...

  2. 鸟哥的linux 实训教程,鸟哥的Linux基础学习实训教程

    1.理想的Linux上机实践课程 每周一次.每次三小时的学与练 本书所有例题讲解,均经过鸟哥在大专院校实施多年来的测试,对于学生的理解具有相当满意的效果. 2. 提供一致性教学环境 让学习者不再有陌生 ...

  3. linux 基础 文件系统 用户权限

    描述Linux系统的启动过程?1.开机自检 BIOS 2.MBR引导 3.GRUB菜单 4.加载内核 5.运行init进程 6.从/etc/inittab读取运行级别 7.根据/etc/rc.sysi ...

  4. linux 基础命令总结

    1.mkdir 创建目录 -p 创建多级目录 mkdir -p /data/test -m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask -p, --p ...

  5. LINUX基础知识笔记全

    LINUX基础知识整理 1.Linux 基本知识 2.Linux 文件和目录管理 vim scp sftp 压缩和归档 文件访问权限 脚本 3.Linux 用户和群组管理 sudo ssh opens ...

  6. OracleOCP认证 之 Linux基础

    Linux 基础 一.SHELL 1: Shell 简介 shell 是用户和Linux 操作系统之间的接口.Linux 中有多种shell, 其中缺省使用的是bash. Linux 系统的shell ...

  7. Linux基础命令-进程与系统性能

    Linux基础命令-进程与系统性能 进程与系统性能 一.进程相关概念 1.进程概念 2.进程的基本状态和转换 3.IPC进程间通信 4.进程优先级 5.进程状态 二.进程与系统性能 1.系统管理工具 ...

  8. LINUX基础试题大全(2)

    说明:此文章由于题数庞大,为方便阅读本人将其分为四篇文章为大家分享!答案会今后不断进行更新! LINUX基础试题大全(1)填空题题 LINUX基础试题大全(2)单项选择题 LINUX基础试题大全(3) ...

  9. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux: Linux初级,也就是入门linux 前提是需要有一些计算机硬件相关的知识或是有 ...

最新文章

  1. usaco Calf Flac(O(n)时间求回文串长度)
  2. $_server[#039;php_auth_user#039;],找不到’./mysql/user.MYD#039;(错误代码:13 – 权限被拒绝)...
  3. 建立UDP到虚拟串口的映射软件 : USR-VCOM,并应用到WiFi调试ESP32
  4. 块状元素的text-align对齐属性
  5. 对话jQuery之父John Resig:JavaScript的开发之路
  6. 带有API网关的AWS Lambda
  7. Java面试之锁-自旋锁
  8. 3.2_栈_链式存储结构(链表形式)
  9. 手机usb计算机无法连接,手机用USB无法连接电脑怎么办
  10. ASP.NET调用WCF服务
  11. Web服务器常用分类
  12. adc0809工作过程C语言,ADC0809引脚图、时序图、工作流程图详解
  13. 在java中获取X.509证书微缩图的方法
  14. express实现上传图片到七牛云
  15. 字符集详解(一看就懂系列)
  16. python中pd是什么意思_python pd
  17. React 项目兼容低版本浏览器
  18. Trajectory generation for quadrotor while tracking a moving target in cluttered environment
  19. Java之------常用的设计模式
  20. python爬虫遇到验证码、输入验证码后提醒验证码错误_爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别...

热门文章

  1. php搜索引擎的数据哪里来,PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)...
  2. FeelUOwn音乐播放器的一点点研究
  3. 小球吃金币unity教程_Unity实验一 ---吃小球游戏
  4. Android开发精典案例60个
  5. 每天读一点儿APM(PIX)代码之四:minimosd
  6. [附源码]SSM计算机毕业设计网上书店管理系统JAVA
  7. Nginx漏洞修复之目录穿越(目录遍历)漏洞复现及修复
  8. Proteus中添加arduino元件库
  9. 虚拟紫禁城,你玩过吗?
  10. dock是什么意思?