Shell-计算表达式、字符串基本操作
1、计算表达式
1.1、基础知识
1.1.1、需求
我们需要在 shell 内部对数据进行普通的数据计算操作
1.1.2、基本语法
方法1:数据运算 $((数据计算)) 注意:数据计算表达式不受空格限制 方法2:本身计算 let 变量名=数据计算 注意:数据计算表达式必须在一起,不允许有空格 方法3:数据运算 expr 数据计算 注意:计算的结果不会交给一个值,也不支持变量
1.2、实践
1.2.1、$(())实践
# echo $((5+1)) 6 # a=5 # echo $((a+1)) 6
1.2.2、let实践
# let a=4+3 # echo $a 7
1.2.3、expr实践
# expr 3 + 4 7 # expr $a + 1 10
# a=10 # b=20 # val=`expr $a + $b` # echo $val 30
2、字符串基本操作
2.1、需求
获取字符串的内容长度
2.2、语法
方法1: ${#String} 方法2: expr length "$String" 方法3: echo $String |awk '{print length}'
2.3、实践
2.3.1、获取字符串长度
# a=charsetstring # echo ${#a} 13
# expr length "$a" 13
# echo "$a" | awk '{print length}' 13
2.3.2、截取字符串内容
# 语法 ${string:偏移量:截取长度} 注意:偏移量 指的是列表的索引值,即默认第一个字符的索引值是0,截取长度 表示要截取的字符串长度,如果为负值,表示反向截取。 # echo $a charsetstring # echo ${a:3:5} rsets # echo ${a:1:-1} 获取2~最后位置的元素 harsetstrin # echo ${a:2} 获取2~最后位置的元素 arsetstring # echo ${a::-2} 从首位到倒数第二位 charsetstri
2.3.3、转换操作【大小写转换】
# 语法 ${string^^} 全部转换成大写 ${string,,} 全部转换成小写 # c=SetCharsetString # echo ${c^^} SETCHARSETSTRING # echo ${c,,} setcharsetstring
2.4、字符串进阶
2.4.1、常见语法
${string#字符串} 删除string内部头部存在匹配的字符串的话,删除头部的字符 ${string##字符串正则} 贪婪模式,删除string内部所有匹配到的信息 ${string%字符串} 删除string内部尾部存在匹配的字符串的话,删除头部的字符 ${string%%字符串正则} 贪婪模式,删除string内部所有匹配到的信息 ${string/字符串正则} 删除首次匹配到的内容 ${string//字符串正则} 删除全部匹配到的内容 ${string/#字符串正则} 删除匹配到的头部内容,等同于 ${string#字符串} ${string/%字符串正则} 删除匹配到的尾部内容,等同于 ${string%字符串}
2.4.2、删除头部信息
# b=setcharsetstring # echo $b setcharsetstring # echo ${b#char} setcharsetstring # echo ${b##s*t} ring
2.4.3、删除尾部信息
# echo $b setcharsetstring # echo ${b%ring} setcharsetst # echo ${b%r*g} setcharsetst
2.4.4、删除操作
# 删除开头的set # echo ${b/set} charsetstring # 删除所有的set # echo ${b//set} charstring # 删除开头的set # echo ${b/#set} charsetstring # 删除最尾的ing # echo ${b/%ing} setcharsetstr
2.4.5、替换操作
# 语法 ${string/正则表达式/替换内容} 将正则表达式 第一次 匹配到的信息替换成指定的信息 ${string//正则表达式/替换内容} 将正则表达式 全部 匹配到的信息替换成指定的信息 # 示例 # echo $b setcharsetstring # 替换首次 # echo ${b/set/SET} SETcharsetstring # 替换所有的 # echo ${b//set/SET} SETcharSETstring
2.4.6、赋值操作
需求:在编写脚本的时候,我们需要进行对某些变量进行 临时性 或 即时性 的赋值操作,从而满足对应的需求。 # 语法 ${string:-value}: 如果变量string为空或者未设置,则返回value的值;否则返回string自己的值。 ${string:=value}: 如果变量string为空或者未设置,则将value的值交给string;否则返回string自己的值。 ${string:+value}: 如果变量string有内容,则返回value的值。 ${string:?value}: 如果变量string为空或者未设置,则返回value的值到标准错误输出 strout。 # :- 实践 # echo $a charsetstring # echo ${a:-666} charsetstring # a="" # echo ${a:-666} 666 # echo ${a} 空 # := 实践 # echo ${aa} # echo ${aa:=666} 666 # echo ${aa} 666 # echo ${aa:=777} 666 # :+ 实践 # echo ${aa} 666 # echo ${aa:+888} 888 # aa="" # echo ${aa:+888} # :? 实践 # aa="" # echo ${aa:+888} # echo ${aa:?'error'} -bash: aa: error # aa="aaa" # echo ${aa:?'error'} aaa
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)