expr
命令可以做数学运算
、关系运算
、字符串运算
。
expr
命令可以看作是简化版的awk。
expr
命令不支持多精度浮点数,如果想要支持浮点数,请使用awk或bc。
使用格式:
variable=$(expr expression1 运算符 expression2)
注意:运算符前后至少要有一个空格
运算符 | 运算 | 说明 | 示例 |
---|---|---|---|
|
| 加法 |
|
|
| 减法 |
|
|
| 乘法 |
|
|
| 除法 |
|
|
| 取余 |
|
示例:
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"
运算符 | 运算 | 说明 | 示例 |
---|---|---|---|
|
| 只要值 等于即可,不管类型 是否相同 |
|
|
| 只要值 不等于即可 |
|
|
| 小于 |
|
|
| 小于或等于 |
|
|
| 大于 |
|
|
| 大于或等于 |
|
计算STRING
的长度。
示例:
x=$(expr length "$HOME")
求字符串的长度,还可以用下面的代码:
${#STRING}
awk '{print length}'<<< STRING
计算CHAR
首次在STRING
中出现的位置。位置从1
开始。
示例:
x="abcdef"
y=$(expr index "$x" c)
从STRING
的POSITION
个字符开始,截取一个长度为LENGTH
子串。
示例:
x="abcdef"
y=$(expr substr "$x" 3 4)
截取一个字符串的子串,还可以用下面的代码:
${#STRING:startIndex}
${#STRING:startIndex:length}
注意:这种方式的位置从0
开始的。
判断STRING
是否匹配REGEX
这个正则表达式。
示例:
x="abcdef"
y=$(expr match "$x" "[a-z]\{6\}")
判断STRING
是否匹配REGEX
这个正则表达式。
示例:
x="abcdef"
y=$(expr "$x" : "[a-z]\{6\}")