expr是evaluate expressions的缩写,我的理解它的作用就是用来输出表达式的值。

看下面的几个例子。

(1)进行数值运算

$:expr 1 + 2     //'+' 左右两边必须有空格

3

(2)获取字串的长度

$:expr length "abcdef"

6

(3)模式匹配

格式:expr  STRING : REGEXP

$:expr 'abc.c' : '\(.*\).c'

abc

上面的例子可以匹配到abc,但要注意三点,

1.'\(.*\).c' 需要加引号,如果写成 \(.*\).c 就匹配不到。'abc.c'加不加引号都可以,

但如果'abc.c'这个字串中有空格,一定要加引号,看下面的例子,

$:expr abc.c ef.p : "\(.*\).c"

expr: syntax error

所以最好都加引号,肯定不会错,为什么\(.*\).c 不加引号就匹配不到,我不知道。

2.'\(.*\).c' 匹配必须是 .* ,只写 *匹配不到东西,*代表匹配前面的字符零或多次,

. 代表'\r\n'外的任意单个字符。

3.expr模式匹配的返回值是\( 和 \)中的部分匹配到的字符,如果没有写\(  \),那返回

匹配到的字符的个数

看下面的例子:

$:expr 'abc.c' : '.*.c'     //匹配到abc.c

5

$:expr "abc.c" : '..c'    //匹配到c.c

3

上面的例子匹配表达式中没有\( \),返回匹配到的字串中字符的个数。

下面写一个小例子,利用expr来打印当前执行的脚本的名字,如果当前文件是一个链接文件,

就打印该链接指向的文件的名字。

脚本如下:

#!/bin/bash

link=`ls -l "$0"`

file=`expr "$link" : '.* -> \(.*\)$'`
if [ "$file" = "" ]
then
echo $0
else
echo $file
fi

创建了一个软链接指向该脚本,运行软链接,发现是可以打印该连接指向的文件的名字。

expr还有其他的用法,man expr查看去吧。

expr命令的一些用法的更多相关文章

  1. 【转】linux expr命令参数及用法详解

    在抓包过程中,查看某个设定时间内,数据上下行多少,用命令expr 计算! --------------------------------------------------------------- ...

  2. (转)linux expr命令参数及用法详解

    linux expr命令参数及用法详解 原文:http://blog.csdn.net/tianmohust/article/details/7628694 expr用法 expr命令一般用于整数值, ...

  3. linux expr命令参数及用法详解

    expr用法 expr命令一般用于整数值,但也可用于字符串.一般格式为: #expr argument operator argument expr也是一个手工命令行计数器. #$expr 10 + ...

  4. expr 命令

    求表达式变量的值.expr 命令读入 Expression 参数,计算它的值,然后将结果写入到标准输出. 用法:expr Expression Expression 参数规则: 用空格隔开每个项. 用 ...

  5. linux下数学运算器:expr命令(shell中完成数学运算)

    expr用法  expr命令一般用于整数值,但也可用于字符串.一般格式为:  expr argument operator argument  expr也是一个手工命令行计数器.  $expr 10 ...

  6. SHELL脚本--expr命令全解

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字 ...

  7. Linux之expr命令详解

    expr命令: expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串. –格式为: expr Expression(命令读入Expressi ...

  8. linux之expr命令

    expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字符串提取.字符串长度计算等功能.它还具有几个特殊功能,判断变量或参数是否为整数.是否为空.是否为0等. 先看expr命令的info文档in ...

  9. expr命令使用

    转载:http://www.cnblogs.com/f-ck-need-u/p/7231832.html expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字符串提取.字符串长度计算等功能. ...

随机推荐

  1. jQuery $.each用法[转]

    jQuery $.each用法 以下内容非原创,来自百度文库http://wenku.baidu.com/view/4796b6145f0e7cd18425368e.html 通过它,你可以遍历对象. ...

  2. 我们正在等待一次技术革命的到来; We are waiting for the arrival of a technological revolution

    In the future, there must be a significant technological revolution just like Industrial Revolution. ...

  3. SVN 服务启动报错 0x8007042a

    服务器环境:Windows Server 2008 R2 企业版,Visual SVNServer 2.6.5 不能签出代码,发现svn服务关闭,手动启动报错: 事件查看器: Error: no li ...

  4. react native 常用第三方库

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica; color: #000000 } p.p2 { margin: 0.0p ...

  5. React Native 的ES5 ES6写法对照表

    模块 引用 在ES5里,如果使用CommonJS标准,引入React包基本通过require进行,代码类似这样: //ES5 var React = require("react" ...

  6. aspx前台调用cs后台方法

    随着对于mvc的习惯使用,aspx页面渐渐用的不怎么用了,主要是生命周期感觉上比较慢,要么就用html+handler一般处理程序来装下逼.虽然不用,但还是要给刚工作的人讲下,相信不少人都想过:既然前 ...

  7. oracle行转列,decode 等用法

    DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值.函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式.当然,如果未能与任何一个实参序偶匹配成功,则函数也有默 ...

  8. 修改安卓串口蓝牙app问题记录

    * 在网上下载的安卓的蓝牙串口app都是基于eclipse的,但往as里边导入时都存在问题. 迫不得已最后我使用的办法还是在as下面新建工程,然后把相关文件导入.不过还是遇到了其他的问题. * 某个蓝 ...

  9. 使用dbms_scheduler包创建定时任务

    本文使用dbms_scheduler的create_job创建执行存储过程的定时任务 创建一个job job_type指定'STORED_PROCEDURE' job_action中填入要执行的存储过 ...

  10. 一次 surface pro 3 的售后保修 黑色三月维权(HSD)

    已更新结束....原创 半根毛线 博文原址 http://www.cnblogs.com/hsd-/ 发现大量转载 转载请与作者联系 drizzle1996@outlook.com或注明转载 ---- ...