文章目录
- 🚏 Shell计算命令
- 🚀 Shell计算命令:expr命令详解
- 🚬 求值表达式(整数 前面)
- 🚬 字符串语法
- 🚬 小结
- 🚄 Shell计算命令:(())命令详解
- 🚬 小结
- 🚒 Shell计算命令:let命令详解
- 🚬 小结
- 🚤 Shell计算命令:$[\]命令详解
- 🧭 执行整数表达式命令总结
😹 作者: gh-xiaohe
😻 gh-xiaohe的博客
😽 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!!
🚏 Shell计算命令
🚀 Shell计算命令:expr命令详解
目标:
- 1、理解expr命令的作用
介绍:
- expr (evaluate expressions 的缩写),译为“表达式求值”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等.
🚬 求值表达式(整数 前面)
计算语法
expr 算术运算符表达式
# 例如: expr 1 + 1 返回: 2
# 例如: expr \( 10 + 10 \) \* 2 + 100 返回:140
获取计算结果赋值给新变量语法
result=`expr 算术运算符表达式`
# 例如: result=`expr 1 + 1` 输出result得到结果: 2
🚬 字符串语法
计算字符串的长度语法
expr length 字符串 # 例如: expr length "itheima" 返回: 7
截取字符串语法
expr substr 字符串 start end # start 截取字符串的起始位置, 从1开始 # end 截取字符串的结束位置, 包含这个位置截取 # 例如 expr substr "itheima" 1 2 返回: it
获取第一个字符在字符串中出现的位置语法
expr index 被查找字符串 需要查找的字符 # 例如 expr index "itheima" t 会返回: 2
正则表达式匹配1语法
expr match 字符串 正则表达式 # 正则表达式默认带有^ , 代表以什么开头 # 返回值为符合匹配字符的长度, 否则返回为0 # 例如: expr match "itheima" ".*m" 会返回: 6 # 正则表达式通配符"."代表任意一个字符 # 正则表达式通配符"*"代表签名的字符可以出现0到多次 # ".*m" 含义为匹配字符串中m前面的字符串长度
正则表表达式匹配2语法, 功能与语法1一样
expr 字符串 : 正则表达式 # 正则表达式默认带有^ , 代表以什么开头 # 返回值为符合匹配字符的长度, 否则返回为0 # 例如: expr "itheima" : ".*m" 会返回: 6
演示:
- 需求
# 四则运算: ( 10 + 10 ) * 2 + 100 # 计算"itheima"字符串的长度 # 获取"itheima"字符串中"t"第一个字符在字符串中出现的位置 # 正则表达式match匹配查找itheima字符串中m前面任意字符的总长度
cal1.sh脚本文件代码
#!/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"`"
🚬 小结
expr命令的作用
- 1、整数计算
expr 整数运算表达式
- 2、字符串操作
- 1、expr length 字符串 获取字符串的长度
- 2、expr substr 字符串 start end 截取字符串
- 3、expr index 字符串 查找的字符 查找字符在字符串中第一次出现的位置, 位置从1开始的
- 4、expr match 字符串 正则表达式
- 5、expr 字符串: 正则表达式
🚄 Shell计算命令:(())命令详解
目标:
-
1、能够使用(())进行整数的数学运算
-
(())是在比较运算符的时候不建议使用、在整数计数方面非常实用
介绍:
- 双小括号 (( )) , 用于进行数学运算表达式的执行 , 将数学运算表达式放在
((
和))
之间。 - 可以使用
$
获取 (( )) 表达式命令的结果,这和使用$
获得变量值是一样的。
语法:
((表达式))
用法:
- 看总结
运算操作符/运算命令 | 说明 |
---|---|
((a=1+6)) ((b=a-1)) ((c=a+b)) | 这种写法可以在计算完成后给变量赋值。以 ((b=a-1)) 为例, 即将 a-1 的运算结果赋值给变量 c。 注意,使用变量时不用加 $ 前缀,(( )) 会自动解析变量名。 |
a=$((1+6) b=$((a-1)) c=$((a+b)) | 可以在 (( )) 前面加上$ 符号获取 (( )) 命令的执行结果,也即获取整个表达式的值。以 c=$((a+b)) 为例,即将 a+b 这个表达式的运算结果赋值给变量 c。 注意,如果 c=((a+b)) 这样的写 法是错误的,不加 $ 就不能取得表达式的结果。 |
((a>7 && b==c)) | (( )) 也可以进行逻辑运算,在 if 语句中常会使用逻辑运算。 |
echo $((a+10)) | 需要立即输出表达式的运算结果时,可以在 (( )) 前面加$ 符号。 |
((a=3+5, b=a+10)) | 对多个表达式同时进行计算, 多表表达式使用","号隔开 |
注意: 符号之间有无空格都可以 , (( a = 1 + 6 )) 等价于 ((a=1+6))
案例演示:
需求
# 计算1+6赋值给变量a # 计算变量a-1赋值给变量b # 计算变量a+变量b赋值给变量c # 打印变量a,变量b, 变量c的值 # $赋值写法 # (())多个表达式计算赋值 # echo输出直接使用(()) # (()) 用于逻辑表达式 在if中使用
calculatej2.sh脚本代码
#!/bin/bash # 计算1+6赋值给变量a ((a=1+6)) # 计算变量a-1赋值给变量b ((b=a-1)) # 计算变量a+变量b赋值给变量c ((c=a+b)) # 打印变量a,变量b, 变量c的值 echo "a=${a},b=${b},c=${c}" # $赋值写法 a=$((1+6)) b=$((a-1)) c=$((a+b)) echo "a=${a},b=${b},c=${c}" # (())多个表达式计算赋值 ((a=1+6,b=a-1,c=a+b)) echo "a=${a},b=${b},c=${c}" # echo输出直接使用(()) echo "1+6=$((1+6))" # (()) 用于逻辑表达式 在if中使用 if ((a>7 && b==c)) then echo "a>7 && b==c 成立" else echo "a>7 && b==c 不成立" fi
🚬 小结
(())的用法:
- 1、括号内赋值:((变量名=整数表达式))
- 2、括号外赋值:变量名=$((整数表达式))
- 3、多表达式赋值:((变量名1=整数表达式1,变量名2=整数表达式2,…))
- 4、与if条件句配合使用:if ((整数表达式))
🚒 Shell计算命令:let命令详解
目标:
- 1、能够使用let进行整数的数学运算赋值
- 赋值方面简洁(整数),计算方面差一些
介绍:
- let 命令和双小括号 (( )) 在数字计算方面功能一样. 但是没有(())功能强大, let只能用于赋值计算, 不能直接输出, 不可以条件判断一起使用
语法:
let 赋值表达式
注意:
- 1、语法功能等价于
((表达式))
- 2、多个表达式之间使用空格, 不是","号
- 3、对于类似
let a+b
这样的写法,Shell 虽然计算了 a+b 的值,但却将结果丢弃, 如果echo let a+b
会直接输出字符串a+b
;若不想这样,可以使用let sum=a+b
将 a+b 的结果保存在变量 sum 中。
输出建议使用(())
案例演示:
需求
# 计算变量a-1赋值给变量b # 计算变量a+变量b赋值给变量c # 打印变量a,变量b, 变量c的值 # let多个表达式计算赋值
calculate3.sh脚本代码
#!/bin/bash # 计算1+6赋值给变量a let a=1+6 # 计算变量a-1赋值给变量b let b=a-1 # 计算变量a+变量b赋值给变量c let c=a+b # 打印变量a,变量b, 变量c的值 echo "a=${a},b=${b},c=${c}" # let多个表达式计算赋值 let a=1+6 b=a-1 c=a+b echo "a=${a},b=${b},c=${c}"
🚬 小结
let数字计算用法
作用: 用于赋值,是最简洁的整数运算赋值命令
- 计算赋值用法: let 变量名=整数运算表达式
- 多个表达式计算赋值用法: let 变量名1=整数运算表达式1 变量名2=整数运算表达式2 …
🚤 Shell计算命令:$[]命令详解
目标:
- 1、能够使用$[]进行整数的数学运算
介绍:
- 和 (())、let 命令类似,$[] 也只能进行整数运算。但是只能对单个表达式的计算求值与输出
语法:
$[表达式]
1、$[] 会对
表达式
进行计算,并取得计算结果
2、表达式内部不可以赋值给变量
案例演示:
calculate4.sh脚本代码
#!/bin/bash # 计算1+6赋值给变量a a=$[1+6] # 计算变量a-1赋值给变量b b=$[a-1] # 计算变量a+变量b赋值给变量c c=$[a+b] # 打印变量a,变量b, 变量c的值 echo "a=${a},b=${b},c=${c}" # 直接输出 echo "$[1+6],$[7-1],$[7+6]"
🧭 执行整数表达式命令总结
执行整数表达式命令的总结, 推荐使用哪个:
- expr
- 优点: 可以直接输出
- 缺点: 计算表达式里面引用变量使用$, 特殊字符需要转义 只能计算一个表达式
- (()) (直接求值输出推荐方式)
- 优点: 直接输出, 里面直接使用变量名, 特殊字符不需要转义, 多个表达式赋值
- 缺点: 需要获取值以后才可以输出
- let (赋值推荐方式)
- 优点: 赋值简单,特殊字符不需要转义
- 缺点: 不能直接输出
- $[]
- 优点: ,特殊字符不需要转义
- 缺点: 不能多表达是计算