lzh电子论坛

欢迎来到lzh电子论坛:
如果您对电子技术感兴趣就加入我们吧!在这里互相交流互相学习!主要讨论的方向有:单片机,ARM,PCB板设计,FPGA,汇编,C/C++等方面。
-----lzh电子论坛
lzhbbs.forumotion.com
lzh电子论坛

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...

欢迎访问lzh电子论坛。可通过【谷歌,SOSO,搜狗】搜索“lzh电子论坛”直接进入论坛。点击了解论坛详细制度


    Ubuntu 10.04下expr命令的使用

    分享
    avatar
    Admin
    管理员
    管理员

    帖子数 : 869
    威望 : 15
    注册日期 : 12-11-23
    年龄 : 25

    Ubuntu 10.04下expr命令的使用

    帖子 由 Admin 于 2013-08-21, 4:13 pm

    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,但命令会自动忽略多余的索引

      目前的日期/时间是2018-09-21, 7:59 pm