expr 可以進行的操作如下:
邏輯操作
arg1 | arg2 邏輯或操作,真則返回arg1,否則返回arg2(以null或者0來判斷參數的真假,有短路功能)
arg1 & arg2 邏輯與操作,真則返回arg1,否則返回arg2(以null或者0來判斷參數真假,有短路功能)
關系操作
arg1 = arg2(或者arg1 == arg2)相等返回1,不等返回0
arg1 != arg2 不等返回1,相等返回0
arg1 > arg2 大於返回1,否則返回0
arg1 >= arg2 大於等於返回1,否則返回0
arg1 < arg2 小於返回1,否則返回0
arg1 <= arg2 小於等於返回1,否則返回0
需要注意的是在關系操作附中,只有所有的參數都是數值才按數值比較,否則,按字典順序比較
算數操作
arg1 + arg2
arg1 - arg2
arg1 * arg2
arg1 / arg2
arg1 % arg2
需要注意的是*在shell有其他意義,因此需要轉義使用\*
字符串操作
STRING : REGEXP
1) REGEXP代表正則表達式,並且該表達式隱含帶有^,即REGXP就是^REGEXP;
2) 如果REGEXP中沒有\(和\),那么返回匹配的字符個數,或者完全不匹配返回0;如果帶有\(或者\),那么就返回\(和\)包含的字符串,或者不匹配返回null
match STRING REGEXP
類STRING : REGEXP相同
substr STRING POSITION LENGTH
返回從POSITION(從1開始),長LENGTH的子字符串,如果POSITION和LENGTH為0,負數,或者非負數,那么返回null
index STRING CHARSET
CHARSET中可以包含多個字符,但是只是返回第一個在STRING中字符的位置,如果CHARSET中的字符都不在STRING中,那么返回0
length STRING
返回STRING的長度
+ TOKEN
將TOKEN解釋為字符串,即使TOKEN是關鍵字,比如expr index index n,由於第二個index是expr語法的關鍵字,因此會報錯,處理的方式就是如下處理:expr index + index n
所有上面表達式需要注意的是,操作符兩邊一定要有空格。