本文为大家介绍 Linux 系统下的 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 命令书写上的规则:
根据上面的规则,我们知道乘法的正确写法是:
# 乘法 * 是 Shell 的特殊字符 [roc@roclinux ~]$ expr 20 \* 2 40
如果 expr 只能计算 A 和 B 的加减乘除的话,那么它是不可能在 Linux 系统中立足的。
下面我们就来感受一下 expr 的四则运算能力。
[roc@roclinux ~]$ expr \( 10 + 10 \) \* 2 + 100 140
计算结果正确。看来只要我们把四则运算的基本功学扎实,利用 expr 进行四则运算不在话下。
expr 不仅有数字计算功能,其实它还具备操作字符串的能力呢,如表 1 所示。
运算 | 表达式 | 意义 |
---|---|---|
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 的学习中更加如鱼得水。