shell命令expr的关键字选项

版权声明:原创作品转载必须注明出处 https://blog.csdn.net/u013390088/article/details/80332167

expr支持的运算表达式比较好理解,而对其关键字选项需要加深一点理解。现记录如下。

  • match

    match 字符串 表达式
    例如:

    $ expr match “abcdefg” “abcd”
    4
    或者
    $ expr “abcdefg” : “abcd”
    4
    (用”abcd”去从头开始匹配”abcdefg”,成功匹配到了4个字符所以返回’4’;如果没有匹配上则会返回’0’)

  • substr

    substr 字符串 偏移量 长度
    例如:

    $ expr substr “abcdefg” 2 4
    bcde
    (即从”abcdefg”的第2个字符取出4个字符(”abcdefg”中的字符从1开始计数))

  • index

    index 字符串 字符
    例如:

    $ expr index “abcdefg” “f”
    6
    (即返回”f”的索引)
    再试一个
    $ expr index “abcdefgf” “f”
    6
    (所以只返回第一个匹配的索引)

  • length

    length 字符串
    例如:

    $ expr length “abcdefg”
    7
    (返回字符串长度)

  • +

    + TOKEN
    例如:
    $ expr + match
    match
    (就是把所有字符串原样返回,对特殊字符、符号,甚至像match这样的关键字都不转义)

shel脚本很可能会用到expr表达式的返回值,而expr的帮助信息中有如下提示:

若表达式的值既不是空也不是 0,退出状态值为 0;若表达式的值为空或为 0,
退出状态值为 1。如果表达式的句法无效,则会在出错时返回退出状态值 3。

  • ##实例: ##
    校验密码:要求输入包含字符和数字和点(.)和下划线(_),且不能以’_’开头
    正则表达式:expr 'a_bc12' : '^[^_][a-z0-9._]*$'
    以上表达式计算匹配到的字符串长度,再和输入的密码长度对比,计算输入的密码长度:# len_passwd=${#PASSWD},如果两个长度一致,说明匹配,否则不匹配
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页