expr命令_Linux expr命令:四則遠算和字串運算

2020-07-16 10:04:31
本文為大家介紹 Linux 系統下的 expr 命令,一款多功能計算器。

expr 實現加減乘除

expr 會加法:
[[email protected] ~]$ expr 10 + 10
20

expr 會減法:
[[email protected] ~]$ expr 20 - 10
10

expr 會除法:
[[email protected] ~]$ expr 20 / 2
10

expr 會乘法:
[[email protected] ~]$ expr 20 * 2
expr: syntax error

怎麼出錯了呢?這是因為你還不熟悉 expr 命令書寫上的規則:
  1. 請用空格隔開每個項。
  2. 請將反斜槓()放在 Shell 特殊字元前面。
  3. 請對包含空格和其他特殊字元的字串用引號括起來。

根據上面的規則,我們知道乘法的正確寫法是:
# 乘法 * 是 Shell 的特殊字元
[[email protected] ~]$ expr 20 * 2
40

expr 的四則運算能力

如果 expr 只能計算 A 和 B 的加減乘除的話,那麼它是不可能在 Linux 系統中立足的。

下面我們就來感受一下 expr 的四則運算能力。
[[email protected] ~]$ 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:
[[email protected] ~]$ expr match "123 456 789" ".*5"
6

從指定位置處抓取子字串:
[[email protected] ~]$ expr substr " this is a test" 3 5
his i

查詢子字串位置:
[[email protected] ~]$ expr index "test for the game" "e"
2

計運算元字串長度:
[[email protected] ~]$ expr length "this is a test"
14

Expr 上得廳堂,下得廚房,不管是數學運算還是字串運算,都是手到擒來。掌握了 expr 一定能讓你在 Linux 的學習中更加如魚得水。