【Shell】计算命令

expr命令详解

expr (evaluate expressions 的缩写),译为“表达式求值”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等.

  • 求值表达式(整数)

    • 计算语法
      expr 算术运算符表达式
      # 例如: expr 1 + 1  返回: 2
      # 例如: expr \( 10 + 10 \) \* 2 + 100 返回:140
      image
    • 获取计算结果赋值给新变量语法
      result=`expr 算术运算符表达式`
      # 例如: result=`expr 1 + 1`  输出result得到结果: 2
  • 字符串语法

    • 计算字符串的长度语法expr length 字符串
      expr length 字符串
      # 例如: expr length "itheima"  返回: 7
    • 截取字符串语法expr substr 字符串 start end
      expr substr 字符串 start end
      # start 截取字符串的起始位置, 从1开始
      # end 截取字符串的结束位置, 包含这个位置截取
      # 例如 expr substr "itheima" 1 2  返回: it
    • 获取第一个字符在字符串中出现的位置语法expr index 被查找字符串 需要查找的字符
      expr index 被查找字符串  需要查找的字符
      # 例如 expr index "itheima" t  会返回: 2
    • 正则表达式匹配1语法expr match 字符串 正则表达式
      expr match 字符串 正则表达式
      # 正则表达式默认带有^ ,  代表以什么开头
      # 返回值为符合匹配字符的长度, 否则返回为0
      # 例如: expr match "itheima" ".*m"  会返回: 6
      # 正则表达式通配符"."代表任意一个字符
      # 正则表达式通配符"*"代表签名的字符可以出现0到多次
      # ".*m" 含义为匹配字符串中m前面的字符串长度
    • 正则表表达式匹配2语法, 功能与语法1一样expr 字符串 : 正则表达式
      expr 字符串 : 正则表达式
      # 正则表达式默认带有^ ,  代表以什么开头
      # 返回值为符合匹配字符的长度, 否则返回为0
      # 例如: expr "itheima" : ".*m"  会返回: 6
  • 演示:

    # 四则运算: ( 10 + 10 ) * 2 + 100
    # 计算"itheima"字符串的长度
    # 获取"itheima"字符串中"t"第一个字符在字符串中出现的位置
    # 正则表达式match匹配查找itheima字符串中m前面任意字符的总长度
    #!/bin/bash
    # 四则运算
    result=`expr \( 10 + 10 \) \* 2 + 100`
    echo "(10+10)*2+100=${result}"
    
    # 计算字符串的长度
    echo "itheima字符串长度=`expr length "itheima"`"
    
    # 获取第一个字符在字符串中出现的位置
    echo "itheima字符串中第一个t的位置=`expr index "itheima" t`"
    
    # 正则表达式匹配1
    echo "正则表达式match匹配查找itheima字符串中m前面任意字符的总长度=`expr match "itheima" ".*m"`"
    
    # 正则表达式匹配2
    echo "正则表达式匹配查找itheima字符串中m前面任意字符的总长度=`expr "itheima" : ".*m"`"
    image

(())命令详解

let命令详解

$[\]命令详解

执行整数表达式命令总结

bc命令详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Al6n Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值