Ubuntu 10.04下expr命令的使用

本文详细介绍了在Ubuntu 10.04系统中使用expr命令进行数值运算和字符串处理的方法。包括基本的数学运算如加减乘除及取余操作,以及字符串匹配、长度获取、字符索引和子字符串提取等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu 10.04下expr命令用于计算数值与处理字符串,其常用的使用方法如下脚本所示:
注:命令行后#后面的是输出结果与解释。


#!/bin/bash
#expr - evaluate expressions


str="string in 1 line."


echo "*** + - * / % ***" #数字运算,最终返回计算结果。不过仅支持整数运算,如果使用浮点数将会报错
echo `expr 8 + 2` #10,数字加法
echo `expr 8 - 2` #6,数字减法
echo `expr 8 \* 2` #16,数字乘法,必须添加\以转义,不然expr会识别为正则表达式扩展而执行失败
echo `expr 8 / 2` #4,数字除法
echo `expr 8 % 2` #0,数字取余数


echo "*** : match ***" #字符匹配,共有2种方式,用:与match是等价的。其中第2个参数是正则表达式,并且会从第1个参数所代表的字符串中从头开始匹配,最终返回正确匹配的字符数;如果匹配失败,则返回0
echo `expr "$str" : "ing"` #0,因为无法匹配字符串的开头,所以匹配失败
echo `expr "$str" : "st"` #2,成功匹配字符串的前2个字符
echo `expr "$str" : "s.*"` #17,成功匹配整个字符串。因为s可以匹配字符串的开头,之后的.*代表任意个数的任意字符,所以可以匹配剩余的所有字符
echo `expr match "$str" ".*in"` #15,成功匹配到字符串中line的in处。.*的含义同上,不过in在字符串中有多处,如何判断返回哪个呢?原来正则表达式的规则是尽量匹配更多的字符,所以将匹配到最后一个in处
echo `expr match "$str" ".*[0-9]"` #11,成功匹配到字符串中的数字1处。.*的含义同上,[0-9]代表一个数字
echo `expr match "$str" ".*"` #17,成功匹配整个字符串。.*的含义同上


echo "*** length ***" #字符串长度,返回字符串中所有字符的个数
echo `expr length "$str"` #17,返回字符串的长度


echo "*** index ***" #字符索引值,返回字符在字符串中第一次出现的索引值,此索引值从1开始;如果未找到则返回0
echo `expr index "$str" "a"` #0,字符串中未找到字符a
echo `expr index "$str" "i"` #4,返回字符i在字符串中第一次出现的索引值,即位于string中的i的索引
echo `expr index "$str" "."` #17,返回最后一个字符.的索引值。此处的字符.并没有特殊含义,所以不须转义;同理还有*等特殊字符
echo `expr index "$str" "rs"` #1,此处返回s在字符串中的索引值。即如果给出的第2个参数不是单个字符,则将依次查找每个字符在字符串中的索引值,最终返回数值最小的那个索引值


echo "*** substr ***" #提取子字符串,第2个参数是开始提取的索引值,第3个参数是提取子字符串的长度,最终返回所提取的子字符串
echo `expr substr "$str" 13 5` #line.,成功提取了最后一个单词和句点
echo `expr substr "$str" 1 6` #string,成功提取了第一个单词
echo `expr substr "$str" 10 20` #1 line.,成功提取了从数字1开始直到字符串结尾的字符串。虽然字符串剩余的字符个数不足20,但命令会自动忽略多余的索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值