关注IT专业技能,持续提升竞争力。

Linux expr 命令

Linux 仙人球 2280℃ 0评论

expr命令,一般用于整数值计算,但也可用于字符串操作。所有的用户均可以使用该项命令,其格式如下:
expr argument operator argument
argument:为第一个参数
operator:为操作运算符
argument:为第二个参数

用途:

1.数学运算器(注意,运算符两边都需要加空格,乘号需要加转义符):
root@vlover-ThinkPad-SL410:~# expr 10 + 19
29
root@vlover-ThinkPad-SL410:~# expr 10 – 3
7
root@vlover-ThinkPad-SL410:~# expr 10 \* 10
100
root@vlover-ThinkPad-SL410:~# expr 10 / 3
3

2.增量计数(这个我一直没测试成功,据说还真的可以):expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。
root@vlover-ThinkPad-SL410:~# LOOP=0
root@vlover-ThinkPad-SL410:~# LOOP=expr $LOOP + 1
注意上面的 是与 ~ 相对应的键。

3.数值测试:用expr测试数值,就是判断如果不是整数的话就返回错误。如下面的这个1.1就不是整数,返回的错误很明显
root@vlover-ThinkPad-SL410:~# rr=1.1
root@vlover-ThinkPad-SL410:~# expr $rr + 1
expr: non-integer argument
这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入dev/null,然后测试最后命令状态,如果为0,证明这是一个数,其他则表明为非数值。
root@vlover-ThinkPad-SL410:~# expr $value + 10 > /dev/null 2>&1
root@vlover-ThinkPad-SL410:~# echo $?
0 (可以看出,这是一个数字)
root@vlover-ThinkPad-SL410:~# value=hello
root@vlover-ThinkPad-SL410:~# expr $value + 10 > /dev/null 2>&1
root@vlover-ThinkPad-SL410:~# echo $?
2 (可以看出,这不是一个数字)
expr也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成功返回1,任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为 "hello" 和"hello"。
root@vlover-ThinkPad-SL410:~# value=hello
root@vlover-ThinkPad-SL410:~# expr $value = hello
1
root@vlover-ThinkPad-SL410:~# echo $?
0
小小注意一下,返回1表示成功的,value确实是hello;而在检验其最后退出状态时,返回0表示测试成功。

4.模式匹配:expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次。
root@vlover-ThinkPad-SL410:~# VALUE=accounts.doc
root@vlover-ThinkPad-SL410:~# expr $VALUE : '.*' 这里是单引号,:号的左右必须加上空格,否则会有错误的
12 (这里.表示任意一个字符,*表示辅助.匹配0或者多次)
在expr中可以使用字符串匹配操作,这里使用模式. d o c抽取文件附属名。
root@vlover-ThinkPad-SL410:~# expr $VALUE : '\(.*\).doc' 这里是单引号,表示前面是xxxx.doc,返回的是前面的部分
root@vlover-ThinkPad-SL410:~# accounts
使用注意事项
在使用expr关键字前面 "
“(反引号),而不是单引号” ‘ “,反引号通常可以在~号或TAB键上面找到。

有关expr更详细的解释,两种方法:
man expr 再次验证了’男人’的伟大,呵呵。不过man这里讲解的稍微简单,info这里比较详细点
info expr

转载请注明:V-Lover » Linux expr 命令

喜欢 (1)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址