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
复制代码

 

posted @   小粉优化大师  阅读(139)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示