expr
语法:expr arg oper arg

1.对于数字运算必须是整数,否者会产生错误

[root@web sh]# expr 10 + 1
11
[root@web sh]# expr 10 / 2
5
[root@web sh]# expr 10 / 3
3
[root@web sh]# expr 10 \* 3
30

 乘号需要转义 注意空格

2.测试命令返回状态

 判断是不是整数

 

[root@web sh]# expr 2.5 + 1 >/dev/null 2>&1
[root@web sh]# echo $?
2
[root@web sh]# expr 2 + 1 >/dev/null 2>&1
[root@web sh]# echo $?
0

 

3.返回本身退出状态

 

[root@web sh]# a=ajax
[root@web sh]# expr $a = 'ajax'
1
[root@web sh]# expr $a = 'ajax1'
0

 

返回1 表示正确 0表示错误
与系统最后的退出状态正好相反

 

 

4.模式匹配
使用expr通过指定冒号选项计算字符串中字符数, .*意即任
必须完整匹配才行

[root@web sh]# a=php55a
[root@web sh]# expr $a : '.*'
6
匹配不了数字
a=aa.php
[root@web sh]# expr $a : '\(.*\).php'
aa
[root@web sh]# echo $a
php34ajax
[root@web sh]# expr $a : '\([a-z]*[0-9]\)'
php3
[root@web sh]# expr $a : '\([a-z]*[0-9]+\)'

[root@web sh]# expr $a : '\([a-z]*[0-9]*\)'
php34

5. 字符串操作
(1)截取字串
从1位置开始,不支持负数
expr substr string start length

[root@web sh]# expr substr 'php56123' 1 1
p
[root@web sh]# expr substr 'php56123' 1 2
ph

(2)查找某个字符在字符串里第一次出现的位置

[root@web sh]# a=phpajax
[root@web sh]# expr index $a p
1
[root@web sh]# expr index $a a
4
[root@web sh]# expr index $a aj
4
[root@web sh]# expr index $a aa
4

(3)计算字符串的长度

[root@web sh]# echo $a
phpajax
[root@web sh]# expr length $a
7