expr命令_Linux expr命令:四则远算和字符串运算

本文为大家介绍
Linux 系统下的 expr 命令,一款多功能计算器。

expr 实现加减乘除

expr 会加法:

[roc@roclinux ~]$ expr 10 + 10
20

expr 会减法:

[roc@roclinux ~]$ expr 20 - 10
10

expr 会除法:

[roc@roclinux ~]$ expr 20 / 2
10

expr 会乘法:

[roc@roclinux ~]$ expr 20 * 2
expr: syntax error

怎么出错了呢?这是因为你还不熟悉 expr 命令书写上的规则:

  1. 请用空格隔开每个项。
  2. 请将反斜杠(\)放在 Shell 特殊字符前面。
  3. 请对包含空格和其他特殊字符的字符串用引号括起来。

根据上面的规则,我们知道乘法的正确写法是:

# 乘法 * 是 Shell 的特殊字符
[roc@roclinux ~]$ expr 20 \* 2
40

expr 的四则运算能力

如果 expr 只能计算 A 和 B 的加减乘除的话,那么它是不可能在 Linux 系统中立足的。

下面我们就来感受一下 expr 的四则运算能力。

[roc@roclinux ~]$ expr \( 10 + 10 \) \* 2 + 100
140

计算结果正确。看来只要我们把四则运算的基本功学扎实,利用 expr 进行四则运算不在话下。

expr 的字符串运算能力

expr 不仅有数字计算功能,其实它还具备操作字符串的能力呢,如表 1 所示。

表1 expr的字符串运算

运算 表达式 意义
match match STRING REGEXP STRING 中匹配 REGEXP 字符串并返回匹配
字符串的长度
substr substr STRING POS LENGTH 从 POS 位置获取长度为 LENGTH 的字符串
index index STRING SUBSTR 杳找子字符串的起始位置
length length STRING 计算字符串的长度

匹配字符串的长度,若找不到则返回 0:

[roc@roclinux ~]$ expr match "123 456 789" ".*5"
6

从指定位置处抓取子字符串:

[roc@roclinux ~]$ expr substr " this is a test" 3 5
his i

查找子字符串位置:

[roc@roclinux ~]$ expr index "test for the game" "e"
2

计算子字符串长度:

[roc@roclinux ~]$ expr length "this is a test"
14

Expr 上得厅堂,下得厨房,不管是数学运算还是字符串运算,都是手到擒来。掌握了 expr 一定能让你在 Linux 的学习中更加如鱼得水。

点赞