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. 当C++多继承遇上类型转换[转]

      1 由来 客户用陈旧的VC++6.0进行项目开发,有一块功能需要我来实现.让一个早就习惯了VS2013的人去使用C++支持不太好的VC6去做开发实在是非常不爽,于是另辟蹊径,打算使用VC++201 ...

  2. flash 居中问题

    如果舞台是1000的宽度,要剧中比较容易 mc1.x = (1000-400)/2; 这样就居中了,来看原理,首先我们要舞台居中,很容易就想到一个数字 1000/2 结果是500 但是x对舞台的中央是 ...

  3. 命令行模式 svn版本管理

    linux 下svn 在命令行模式下的操作安装完svn服务并配置了环境变量之后,要创建一个存放工厂(项目)的仓库repositories用于版本控制(比如我的repositories的路径为 path ...

  4. SSL/TLS协议运行机制

      转载自http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行 ...

  5. 与考试相关的JS方法

    var IsChange = 0;var ensure = 0;var timeCounter = (function () {//考试剩余时间 倒计时 var int; //var total = ...

  6. C#的选择语句练习

    1.请输入一个数x,若x<1,则y=x:若1<=x<10,则y=2x-1:若x>=10,则y=3x-11,要求随意输入一个x值,求出y值. 2.输入问题[你有房子吗?],若回答 ...

  7. Map练习错误

    private Student findStuByNumber(String number) {              Student student=null ;       for(Stude ...

  8. S3C2440的Linux启动过程分析(一)——SC2440处理器结构

    1.1.     S3C2440处理器结构 S3C2440处理器的结构如下图所示,其核心单元为ARM9TDMI处理器核,主要包括16K的指令Cache和16K的数据Cache,以及分开的指令和数据MM ...

  9. 【python】Redis介绍及简单使用

    一.redis redis是一个key-value存储系统.和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合).zset(s ...

  10. uva1635

    /* 哑元 组合数的递推整除判断_________________________________________________________________________________ #i ...