每天一個 Linux 命令:expr 命令

1. 命令簡介

expr(expression) 命令用於計算表達式的值。支持關係運算、算數運算、字符串匹配、截取、獲取長度等相關運算。

只支持整數和字符串,不支持浮點數。若涉及浮點數的運算,可使用 bc 命令。

2. 命令格式

expr EXPRESSIONexpr OPTION

3. 選項說明

--help 顯示幫助信息並退出--version 顯示版本信息並退

4. 表達式說明

ARG1 | ARG2
  若 ARG1 的值不爲 0 或者不爲空,則返回 ARG1,否則返回 ARG2
ARG1 & ARG2
  若兩邊的值都不爲 0 或都不爲空,則返回 ARG1,否則返回 0
ARG1 < ARG2
  ARG1 小於 ARG2 返回 1 否則返回 0
ARG1 <= ARG2
  ARG1 小於或等於 ARG2 返回 1 否則返回 0
ARG1 = ARG2
  ARG1 等於 ARG2 返回 1 否則返回 0
ARG1 != ARG2
  ARG1 不等於 ARG2 返回 1 否則返回 0
ARG1 >= ARG2
  ARG1 大於或等於 ARG2 返回 1 否則返回 0
ARG1 > ARG2
  ARG1 大於 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 CHARS
  CHARS 中任意單個字符在 STRING 中最前面的字符位置。如果在 STRING 中完全不存在 CHARS 中的字符,則返回 0
length STRING
  字符串的長度
+ TOKEN
  將 TOKEN 解析爲普通字符串,即使 TOKEN 是像 match 或操作符 / 一樣的關鍵字
( EXPRESSION )
  表達式可以使用一對小括號括起來。注意表達式與括號間需要空格

注意

(1)很多操作符需要進行轉義,比如大於號在 Shell 中用於重定向,使用大於號時需要轉義 >;

(2)如果兩個參數都是數字,那麼比較就是算術運算,否則就是字典序。

5. 常用示例

(1)整數的算數運算。

expr 1 + 1
2

expr 1 - 1
0

expr 1 * 1
1

expr 1 / 2
0

expr 1 % 2
1

(2)整數的關係運算。

expr 1 \< 1
0

expr 1 \<= 1
1

expr 1 \> 1
0

expr 1 \>= 1
1

expr 1 = 1
1

expr 1 != 1
0expr "abc" \< "acb"
1expr "abc" \< "acb"
1

(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

轉自:戀貓大鯉魚 

dablelv.blog.csdn.net/article/details/103134615

****推薦關注「算法愛好者」,修煉編程內功

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/MVIXGn4YOKnrPxKvVTcXRQ