注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

Linux下的expr命令功能分析:bash中的整数计算与字符串操作  

2013-12-16 09:05:48|  分类: linux工具命令 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Expr简介

1)expr命令为Linux中的命令,一般用于整数值计算,但也可用于字符串操作。

使用权限:所有使用者

命令格式

expr argument operator argument

参数说明

argument:为第一个参数

operator:为操作运算符

argument:为第二个参数

用法示例

1)数学运算器

注意运算符左右都要有空格。

$expr 10 + 10

20

$expr 1500 + 900

2400

$expr 30 / 3

10

$expr 30 / 3 / 2

5

$expr 30 \* 3

90

使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。

Linux下的expr命令功能分析:bash中的整数计算与字符串操作 - itoedr - itoedr的it学苑
expr 的功能说明
 Linux下的expr命令功能分析:bash中的整数计算与字符串操作 - itoedr - itoedr的it学苑
expr计算式例子(数字前的空格是关注要点)

增量计数

expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。

$LOOP=0

$LOOP=`expr $LOOP + 1`

注意上面的 ` 是与 ~ 相对应的键。

数值测试

可以用expr测试一个数。如果试图计算非整数,将返回错误。

$rr=1.1

$expr $rr + 1

expr: non-numeric argument

$rr=2

$expr $rr + 1

3

这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入dev/null,然后测试最后命令状态,如果为0,证明这是一个数,其他则表明为非数值。

$VALUE=12

$expr $VALUE + 10 > /dev/null 2>&1

$echo $?

0

这是一个数。

$VALUE=hello

$expr $VALUE + 10 > /dev/null 2>&1

$echo $?

2

这是一个非数值字符。

expr也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成功返回1(重要),任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为 "hello" "hello"

$VALUE=hello

$expr $VALUE = "hello"

1

$echo $?

0

expr返回1。不要混淆了,这表明成功。现在检验其最后退出状态,返回0表示测试成功,"hello"确实等于"hello"

2)模式匹配

expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次。

$VALUE=accounts.doc

$expr $VALUE : '.*'

12

expr中可以使用字符串匹配操作,这里使用模式. d o c抽取文件附属名。

$expr $VALUE : '\(.*\).doc'

accounts

使用注意事项

在使用expr关键字前面 " ` "(反引号),而不是单引号" ' ",反引号通常可以在~号或TAB键上面找到.

3)字符串截取前后部分内容
echo ${变量#开始字符串*结束字符串} #表示掐头,因为键盘上#在$($就是变量,这样便于记住)前面,一个表示最小匹配
echo ${变量%开始字符串r*结束字符串} # %表示去尾,因为键盘上%在$后面,一个表示最小匹配 
echo ${变量##开始字符串*结束字符串} 两个表示最大匹配 echo ${变量%%开始字符串r*结束字符串} 两个表示最大匹配

 总结记忆方法
键盘上#$%三个字符连续的,以$为变量提示符,#即截取变量前的字符,表示截取后面字符

例子:

字符串截取:${mytring:4:5}

如:$ mytring=afoaafwabaf
$ echo ${
mytring:4:5}                   # 截取 ${mytring} 中的第4个字符起(后),向右数5个字符
$
afwab

Linux下的expr命令功能分析:bash中的整数计算与字符串操作 - itoedr - itoedr的it学苑
4)字符替換
在脚本中,替换的例子
特指出:
 echo ${变量/旧的内容/新的内容} #替换一个,是单线/
 echo ${变量//旧的内容/新的内容} #替换所有,区别就在双//线 
例子:
isher@isher-ubuntu:~$ aa="No such file or directory" isher@isher-ubuntu:~$ echo ${aa/o/a}
Na such file or directory #这里仅替换了第一个单词No的o变为了a 
isher@isher-ubuntu:~$ aa="No such file or directory" isher@isher-ubuntu:~$ echo ${aa//o/a}
Na such file ar directary #这里可以看到,替换这句话(变量)的所有的o为了a了
Linux下的expr命令功能分析:bash中的整数计算与字符串操作 - itoedr - itoedr的it学苑

使用案例之一:使用ifconfig读取网卡接收到的字节总数
Linux下的expr命令功能分析:bash中的整数计算与字符串操作 - itoedr - itoedr的it学苑
使用案例之二:使用nload读取网卡适时带宽
         


4)字符串编码的处理函数
urlencode 是将一些特殊字符转义成标准码(复合url规范的字符串);
urldecode 再还原成原始码(将使用urlencode的字符串转化为之前的字符串);
  评论这张
 
阅读(58)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017