expr命令
1.0、参考
1.1、expr命令的作用

expr命令可以做数学运算关系运算字符串运算

expr命令可以看作是简化版的awk

expr命令不支持多精度浮点数,如果想要支持浮点数,请使用awkbc

1.2、expr命令的使用
1.2.1、算数运算 

使用格式:

variable=$(expr expression1 运算符 expression2)

注意:运算符前后至少要有一个空格

运算符运算说明示例
+
a + b
加法
x=2;
y=$(expr $x + 3);
-
a - b
减法
x=2;
y=$(expr $x - 3);
\*
a \* b
乘法
x=2;
y=$(expr $x \* 3);
/
a / b
除法
x=2;
y=$(expr $x / 3);
%
a % b
取余
x=2;
y=$(expr $x % 3);

示例:

i=1
n=100
value=0
tmp=0
while [ $i -le $n ]
do
    tmp=`expr $i + 1`
    tmp2=`expr $i \* $tmp`
    value=`expr $value + $tmp2`
    i=$tmp
done

echo "1x2 + 2x3 + 3x4 + + ... + 99x100=$value"
1.2.2、关系运算 
运算符运算说明示例
=
a = b
只要等于即可,不管类型是否相同
x=0
expr 0 = $x > /dev/null //true
!=
a != b
只要不等于即可
x=0
expr 0 != $x > /dev/null //false
\<
a \< b
小于
x=1
expr 0 \< $x > /dev/null //true
\<=
a \<= b
小于或等于
x=1
expr 0 \<= $x > /dev/null //true
\>
a \> b
大于
x=1
expr 2 \<= $x > /dev/null //true
\>=
a \>= b
大于或等于
x=1
expr 2 \<= $x > /dev/null //true
1.2.3、字符串运算符 
1.2.3.1、expr length STRING

计算STRING的长度。

示例:

x=$(expr length "$HOME")

求字符串的长度,还可以用下面的代码:

${#STRING}
awk '{print length}'<<< STRING
1.2.3.2、expr index STRING CHAR

计算CHAR首次在STRING中出现的位置。位置从1开始。

示例:

x="abcdef"
y=$(expr index "$x" c)
1.2.3.3、expr substr STRING POSITION LENGTH

STRINGPOSITION个字符开始,截取一个长度为LENGTH子串。

示例:

x="abcdef"
y=$(expr substr "$x" 3 4)

截取一个字符串的子串,还可以用下面的代码:

${#STRING:startIndex}
${#STRING:startIndex:length}

注意:这种方式的位置从0开始的。

1.2.3.4、expr match STRING REGEX

判断STRING是否匹配REGEX这个正则表达式。

示例:

x="abcdef"
y=$(expr match "$x" "[a-z]\{6\}")
1.2.3.5、expr STRING : REGEX

判断STRING是否匹配REGEX这个正则表达式。

示例:

x="abcdef"
y=$(expr "$x" : "[a-z]\{6\}")