Shell系列(5) - shell的expr使用

267 阅读1分钟

「4月日新计划更文活动」

expr的使用

  • 用于整数计算的用法
  • 使用expr命令,计算结果会直接输出,如果希望将计算结果赋值给变量,需要将整个表达式用反引号 `` 包围起来
expr 表达式

注意

  • 表达式与运算符之间要有空格,操作符的两边,都需要有空格
  • expr 不可以进行自增 ++ 和自减--运算
  • 使用变量时要加 $ 前缀
  • 有些特殊符号必须用反斜杠``进行转义,比如:乘号 * 、小括号 ()

赋值给变量

  • 将计算结果赋值给变量,使用反引号``将整个表达式包围起来
num=`expr 10 + 10`
echo $num

字符串操作

计算字符串长度

  • 主要用于计算字符串长度(包含空格在内)
  • 语句格式expr length STRING
expr length  "cccc num"

返回第一个在string中字符的位置

  • 只返回第一个在STRING中字符的位置,如果CHARSET中字符都不在STRING中,那么返回0
  • 语句格式expr index STRING CHARSET
expr index "num look at me" m

提取字符串的子串

  • 语句格式expr substr STRING POSITION LENGTH
  • 参数说明:
    • STRING ****:内容
    • POSITION :起始位置(从1开始
    • LENGTH:截取子串的长度
expr substr "my name is seven" 6 9

算数运算符操作

  • 加法 arg1 + arg2
  • 减法 arg1 + arg2
  • 乘法 arg1 * arg2 ,如需使用乘法需要进行转义*
  • 除法 arg1 / arg2
  • 余数 arg1 % arg2
  • 幂数 arg1 * arg1 * arg1
expr 20 + 4
expr 14 - 1
expr 15 * 3
expr 18 / 2
expr 15 % 4
expr 2 * 2 * 2

逻辑运算符

使用>,>=,<,<=

  • 使用=,相等返回1,不等返回0
  • 使用!=,不等返回1,相等返回0
  • 使用>,大于返回1,否则返回0
  • 使用>=,大于或者等于返回1,否则返回0
  • 使用<,小于返回1,否则返归0
  • 使用<=,小于等于返回1,否则返回0

注意:当所有的参数都是数值才按数值比较,否则按照字典顺序比较