介绍
expr (evaluate expressions 的缩写),译为“表达式求值”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等.
求值表达式(已讲)
计算语法
expr 算术运算符表达式
# 例如: expr 1 + 1 返回: 2
# 例如: expr \( 10 + 10 \) \* 2 + 100 返回:140
获取计算结果赋值给新变量语法
result=`expr 算术运算符表达式`
# 例如: result=`expr 1 + 1` 输出result得到结果: 2
字符串语法
计算字符串的长度语法
expr length 字符串
# 例如: expr length "itheima" 返回: 7
截取字符串语法
expr substr 字符串 start end
# start 截取字符串的起始位置, 从1开始
# end 截取字符串的结束位置, 包含这个位置截取
# 例如 expr substr "itheima" 1 2 返回: it
获取第一个字符在字符串中出现的位置语法
expr index 被查找字符串 需要查找的字符
# 例如 expr index "itheima" t 会返回: 2
正则表达式匹配1语法
expr match 字符串 正则表达式
# 正则表达式默认带有^ , 代表以什么开头
# 返回值为符合匹配字符的长度, 否则返回为0
# 例如: expr match "itheima" ".*m" 会返回: 6
# 正则表达式通配符"."代表任意一个字符
# 正则表达式通配符"*"代表签名的字符可以出现0到多次
# ".*m" 含义为匹配字符串中m前面的字符串长度
正则表表达式匹配2语法, 功能与语法1一样
expr 字符串 : 正则表达式
# 正则表达式默认带有^ , 代表以什么开头
# 返回值为符合匹配字符的长度, 否则返回为0
# 例如: expr "itheima" : ".*m" 会返回: 6
演示
需求
# 四则运算: ( 10 + 10 ) * 2 + 100
# 计算"itheima"字符串的长度
# 获取"itheima"字符串中"t"第一个字符在字符串中出现的位置
# 正则表达式match匹配查找itheima字符串中m前面任意字符的总长度
cal1.sh脚本文件代码
#!/bin/bash
# 四则运算
result=`expr \( 10 + 10 \) \* 2 + 100`
echo "(10+10)*2+100=${result}"
# 计算字符串的长度
echo "itheima字符串长度=`expr length "itheima"`"
# 获取第一个字符在字符串中出现的位置
echo "itheima字符串中第一个t的位置=`expr index "itheima" t`"
# 正则表达式匹配1
echo "正则表达式match匹配查找itheima字符串中m前面任意字符的总长度=`expr match "itheima" ".*m"`"
# 正则表达式匹配2
echo "正则表达式匹配查找itheima字符串中m前面任意字符的总长度=`expr "itheima" : ".*m"`"
运行效果
小结
expr命令的作用
整数计算
expr 整数运算表达式
字符串操作
expr length 字符串
获取字符串的长度
expr substr 字符串 start end
截取字符串
expr index 字符串 查找的字符
查找字符在字符串中第一次出现的位置, 位置从1开始的
expr match 字符串 正则表达式
expr 字符串: 正则表达式