shell命令expr的关键字选项

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},如果两个长度一致,说明匹配,否则不匹配
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值