linux expr 命令

expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。

它还具有几个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等。

expr 语法

expr 表达式

expr 用法目录

expr length 计算字串长度

该表达式是返回字符串 string的长度,其中string不允许为空,否则将报错,所以可以用来判断变量是否为空。

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr length "xinbiancheng.cn"

15

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr length abcde

5

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr length 123

3

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr length $xxx

expr: syntax error #expr 报错 因为没有$xxx 所以为null 空

[root@iz8vbbxoyfcgyzkxcspg04z test]# if [ $? -ne 0 ];then echo '$xxx is null';fi

$xxx is null #在执行expr 之前需要判断是否为空

expr 四则运算

注意:

expr 命令只能用于整数值计算

expr 运算符左右都有空格,如果没有空格表示是字符串连接

expr 使用乘号时,必须用反斜线屏蔽其特定含义。因为expr 支持正则表达式,而正则表达式*星号是有特殊含义的,所以需要进行转义

expr 不用整数进行计算报错为:expr: non-integer argument

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 1.2 + 1.3

expr: non-integer argument

expr 没有空格表示是字符串连接

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 1+2

1+2

expr 正确写法中间加空格

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 1 + 2

3

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 6 / 3 #expr 整除

2

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 6 % 3 #expr 取余

0

expr *乘号 不用  \ 反斜线 或 引号 ' 包裹会报错 expr: syntax error

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 2 * 2

expr: syntax error

expr *乘号 正确写法,有两种如下所示:

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 2 \* 2

4

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 2 "*" 2

4

expr 比较操作

比较操作符< <= = == != >= > 其中""是正则表达式的元字符,且"

这些操作符会首先会将两端的参数转换为数值,如果转换成功,则采用数值比较,如果转换失败,则按照字符集的排序规则进行字符大小比较。

比较的结果若为true,则expr返回1,否则返回0。

[root@iz8vbbxoyfcgyzkxcspg04z test]# a=6

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr $a = 2

0

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr $a = 6

1

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr $a \* 3 = 18

1

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abc \> ab

1

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abc \> abcd

0

expr 逻辑运算

逻辑连接符号"&"和"|",这两个符号都需要转义,或使用引号包围

"&"表示如果两个参数都非0,则返回第一个参数,否则返回0。但任意一个参数为空,则expr报错。除非空字符串使用引号包围,则处理方法和0一样。

"|"表示如果第一个参数非0,则返回第一个参数的值,否则返回第二个参数。但如果任意一个参数为空,则expr报错。除非空字符串使用引号包围,则处理方法和0一样。

expr | 或 操作

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr $b '|' 1 #$b变量没有任何赋值,所以为空,则expr报错

expr: syntax error

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr "$b" '|' 1 #空字符串使用引号包围 expr不会报错 当0处理

1

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abc '|' 0 #expr 第一个参数不为空,返回第一个

abc

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 0 '|' abc #expr 第二个参数不为空,返回第二个

abc

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abc '|' cde #expr 第一个参数不为空,返回第一个

abc

expr & 与 操作

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr $b '&' 1 #$b变量没有任何赋值,所以为空,则expr报错

expr: syntax error

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr "$b" '&' 1 #空字符串使用引号包围 expr不会报错 当0处理

0

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 0 '&' abc

0

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abc '&' 0

0

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abc '&' cde #两个参数都是非0,返回第一个参数

abc

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr cde '&' abc #两个参数都是非0,返回第一个参数

cde

expr substr 截取字符串

用法:

expr substr string pos len

该表达式是从string字符串中取出从pos位置开始长度为len的子字符串。如果pos或len为非正整数时,将返回空字符串。

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr substr abcde 2 3

bcd

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr substr abcde 2 4

bcde

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr substr abcde 2 5

bcde

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr substr abcde 2 0 #非正整数返回空字符串

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr substr abcde 2 -1 #非正整数返回空字符串

expr index 返回找到最靠前的字符的位置

用法:

expr  index string chars

该表达式是从chars中每一个字符在string字符串中搜索它的位置,找string中最靠前位置。

实例代码:

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index abcde dec

3

expr 命令将对字符串"dec"逐字符分解,首先分解得到第一个字符d,从abcde中搜索到d的位置为4,再分解得到第二个字符e,该字符在abcde中的位置为5,最后得到的字符是c,该字符在abcde中的位置为3。其中3是最靠前的位置,所以命令返回的结果为3。

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index 'abcde' c

3

如果chars中的所有字符都不存在于string中,则返回0。

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index abcde 1

0

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index abcde f

0

expr + token 特殊字符的用法

expr中有些符号和关键字有特殊意义,如"match"、"index"、"length",如果要让其成为字符,使用该表达式将任意token强制解析为普通字符串。

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index match m

expr: syntax error

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index index i

expr: syntax error

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index length e

expr: syntax error

正确用法 在 关键字 前面空格再加一个+加号连接

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index + match m

1

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index + index i

1

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr index + length e

2

expr 正则表达式的用法

如果没有学习正则表达式,有可能不容易看懂,请点击链接学习。

用法:

expr string : REGEX

string代表字符串,REGEX代表正则表达式,如果要输出匹配到的字符串结果,需要使用"\("和"\)",否则返回的将是匹配到的字符串数量。

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abcde : 'ab\(.*\)'

cde

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abcde : 'ab\(.\)'

c

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abcde : 'ab.*'

5

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abcde : 'ab.'

3

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abcde : '.*cd*'

4

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr 手机号码是12345678911对吗? : '手机号码是\([0-9]*\)'

12345678911

注意,由于REGEX中隐含了"^",所以使得匹配时都是从string首字符开始的。

[root@iz8vbbxoyfcgyzkxcspg04z test]# expr abcde : 'cd.*'

0

之所以为0,是因为真正的正则表达式是"^cd.*",而abcde不是c开头而是a开头的,所以无法匹配到任何结果。

因此,任何字符串匹配时,都应该从首字符开始。字符串匹配时,会先将两端参数转换为字符格式。

linux expr字符串,linux expr 命令相关推荐

  1. linux tr 字符串,linux tr命令-转换或删除输入的字符的

    概述 使用tr命令可以对输入的字符串的字符进行替换.压缩和删除(使用-d选项),需要注意的是,每个替换行为是根据原字符串进行的,也可以理解成是同时一一替换,而不是等待第一个字符替换完了再替换下一个.下 ...

  2. linux expect 字符串,linux expect 用法

    一.概述 我们通过Shell可以实现简单的控制流功能如循环.判断等.但是对于需要交互的场合则必须通过人工来干预有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能.而Expect就使 ...

  3. linux中 字符串,linux内核驱动中对字符串的操作

    size_t strlcat(char *dest, const char *src, size_t count) 功能:把src所指字符串的前count个字符添加到dest结尾处(覆盖dest结尾处 ...

  4. linux l字符串,Linux shell 字符串常用操作

    取变量的长度[root@oldjun-study scripts]# var=oldboy123 [root@oldjun-study scripts]# echo ${var} oldboy123 ...

  5. Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...

    在 Linux 中,我们可以使用 expr 命令对字符串做一些处理.例如: expr index STRING CHARS 获取指定字符在字符串中的位置 expr substr STRING POS ...

  6. linux expr格式,计算2-expr命令举例

    # **一.expr命令** ## **1.语法和功能** 只能用于整数运算和字符串长度.匹配等运算处理 ``` expr 2 + 2 expr 2 - 2 expr 2 \* 2 expr 2 / ...

  7. linux sh expr冒号,linux expr命令参数及用法详解

    expr命令一般用于整数值,但也可用于字符串.一般格式为:#expr argument operator argumentexpr也是一个手工命令行计数器.#$expr 10 + 1020#$expr ...

  8. 字串处理 expr在linux中是一个功能非常强大的命令。通过学习做一个小小的总结。

    expr在linux中是一个功能非常强大的命令.通过学习做一个小小的总结. 1.计算字符串的长度.我们可以用awk中的length(s)进行计算.我们也可以用echo中的echo ${#string} ...

  9. linux expr3 4,Linux下expr命令用法

    expr命令详解 字串长度 # expr length "this is a test" 14 数字求商数 # expr 14 % 9 5 从位置处抓取字串 # expr subs ...

最新文章

  1. python 保存模型、加载模型 Joblib
  2. 【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
  3. vue重启node_【ts】vue-typescript-admin类型any仍然报错
  4. 数据分析——pyecharts
  5. 架构设计 | 缓存管理模式,监控和内存回收策略
  6. nginx-一个端口代理多个服务
  7. Gym 101246G Revolutionary Roads
  8. 【开源】C#跨平台物联网通讯框架ServerSuperIO(SSIO)
  9. 【linux高级程序设计】(第十一章)System V进程间通信 4
  10. 怎么把PDF转换成图片?推荐6个终极解决方法!
  11. macpro台式计算机,回顾经典的苹果Mac台式机 你见过几个?
  12. BurningStudioPortable刻录CD步骤
  13. Mac下编程的实用快捷键
  14. 实验2:MATLAB矩阵分析与处理
  15. 读书百客:《小星》赏析
  16. 循序渐进理解RTFM算法
  17. 产品上ref和lot是什么意思_产品上的LOT是什么意思?
  18. 【ROS入门学习01| ROS命令行工具的使用】
  19. axure学习帖-中继器二级菜单
  20. Linux下饥荒远程服务器配置教程(包含mod的配置)(19/08/22/更新游戏更新后搜索不到服务器的对策)

热门文章

  1. 华章公司图书备受2010年数据库大会会员喜欢
  2. Java实现判断闰年
  3. 从汇编角度理解 ebpesp 寄存器、函数调用过程、函数参数传递以及堆栈平衡
  4. 【职业规划】第二篇:程序员分级之中级程序员
  5. CreateFileMapping用法
  6. 微软面试100题2010年版全部答案集锦 含下载地址
  7. 小白学python(001)-selenium安装与使用的那些坑
  8. 使用属性(C# 编程指南)
  9. 树莓派的操作系统介绍
  10. Unity中实现激光效果——Unique Lasers Volume插件