每天一個 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