本文介绍四中常用计算运算表达expr、(())、let、$[],整数运算表单时推荐使用(())或let。
expr
整数计算
语法: expr 表达式
说明:支持简单的运算符 (+ - * 、 %)
表达式内不支持赋值,结果直接输出。
只能支持一个表达式。
表达式引用变量需要使用$符号。
表达式中小括号、乘号需要转义,并且小括号和预算符两侧都需要留有空格。
#!/bin/bash num1=2 :<<! 计算 (1+3)*3 小括号、乘号需要转义 小括号和运算符两个必须保留空格 ! expr \( 1 + 3 \) \* 3 / 2 # 引用变量需要使用$ expr 1 + $num1
字符串处理
获取字符串传长度
语法:expr length “String”
# expr length "hello world" 11
截取字符串
语法:expr substr “string” start end
其中start和end都从1开始计数
# expr substr "hello world" 1 2 he
查询chars在字符串string第一次出现的位置
语法:expr index “string” chars
chars 如果是单个字符的话,会返回该字符所在位置,从1开始。
如果为多字符,将会被拆分成单个字符,统计每个字符所在位置,返回最小的值。
# expr index "hello world" we 2
支持简单表达式
语法:
expr match 字符串 正则表达式
expr 字符串:正则表达式
返回匹配字符串的总长度
(())
语法: ((表达式))
说明:
表达式内支持赋值,结果不输出。
支持多个表达式。
特殊字符不需要转义。
引用变量可以不是用$。
运算符两个可以不保留空格。
#!/bin/bash num1=2 # 增加$获取整个表达是的值 value=$((1+1)) echo value=$value # 表达式内支持赋值 ((value1=1+3)) echo value1=$value1 # 支持多个表达式 ((value2=2+3,value3=2*4)) echo value2=$value2 value3=$value3 # 引用变量不要使用$ ((value4=num1+1)) echo value4=$value4 # 支持逻辑运算 value5=$((1<2&&5>4)) echo value5=$value5
let
赋值表达式,支持简单整数运算。
语法:let 赋值表达式
说明:
表达式内支持赋值,结果不输出。
支持多个表达式。
特殊字符不需要转义。
引用变量不需要使用$。
运算符两个可以不保留空格。
#!/bin/bash num1=1 # 结果不输出 let 1+1 # 支持多表达式、不需要转义特殊字符 let value1=1+1 value2=(1+2)*2 echo value1=$value1 value2=$value2 # 引用变量不需要使用$ let value3=num1+1 echo value3=$value3
$[]
支持简单整数运算。
语法:$[表达式]
说明:
表达式内支持赋值,结果不直接输出,直接返回所以需要使用变量接收参数,否则将作为命令执行。
只支持一个表达式。
特殊字符不需要转义。
引用变量不需要使用$。
运算符两个可以不保留空格。
#!/bin/bash num1=1 # 结果不输出,直接返回所以需要使用变量接收参数,否则将作为命令执行。 $[1+1] # 不需要转义特殊字符 value1=$[(1+2)*2] echo value1=$value1 # 引用变量不需要使用$ value3=$[2+num1] echo value3=$value3 # 表达式内支持赋值 value5=$[value4=1+5] echo value4=$value4 value5=$value5
expr 文章推荐:https://www.cnblogs.com/f-ck-need-u/p/7231832.html