首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >shell脚本 变量测试,截取与替换

shell脚本 变量测试,截取与替换

作者头像
玖柒的小窝
修改2021-09-14 10:31:19
修改2021-09-14 10:31:19
1.2K00
代码可运行
举报
文章被收录于专栏:各类技术文章~各类技术文章~
运行总次数:0
代码可运行

1.变量测试的用法

shell支持变量测试和默认赋值,当一个变量不存在的时候,可以默认给此变量进行赋值。变量测试和赋值有多种方式,常见的有四种情况

变量

含义

${var:-word1}

若var存在且非空,则值为$var; 若var未定义或为空值,则值为word1,但var的值不变

${var:=word2}

若var存在且非空,则值为$var; 若var未定义或为空值,则值为word2,且var被赋值word2

${var:?word3}

若var存在且非空,则值为$var; 若var未定义或为空值,则输出信息word3,并终止脚本

${var:+world4}

若var存在且非空,则值为word4,否则返回空值,但var的值不变

看下面的操作过程,更能清晰的理解变量测试的含义

代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost ~]# var=
[root@localhost ~]# echo ${var:-word1}
word1
[root@localhost ~]# echo "$var"

[root@localhost ~]# var=wen
[root@localhost ~]# echo ${var:-word1}
wen
[root@localhost ~]# var=
[root@localhost ~]# echo ${var:=word2}
word2
[root@localhost ~]# echo "$var"
word2
[root@localhost ~]# echo ${var:?word3}
word2
[root@localhost ~]# echo ${var:+word2}
word2
[root@localhost ~]# var=
[root@localhost ~]# echo ${var:+word4}

[root@localhost ~]# echo "$var"

[root@localhost ~]# 

2.变量截取的用法

此外,shell还支持字符串的替换

字符变量

含义

${#var}

返回字符串变量var的长度

${var:m}

返回${var}中从第m个字符之后的所有部分

${var:m:len}

返回${var}中从第m个字符之后开始,长度为len的部分

${var#pattern}

删除${var}中开头部分与pattern匹配的部分

${var%pattern}

删除${var}中结尾部分与pattern匹配的部分

操作过程如下

代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost ~]# var="shell kubernetes mysql"
[root@localhost ~]# echo ${#var}
22
[root@localhost ~]# echo ${var:3}
ll kubernetes mysql
[root@localhost ~]# echo ${var:3:5}
ll ku
[root@localhost ~]# echo ${var#k}
shell kubernetes mysql
[root@localhost ~]# echo ${var%k}
shell kubernetes mysql

3.字符串替换用法

字符变量

含义

${var/old/new}

用new替换$var中第一次出现的old

${var//old/new}

用new替换$var中所有的old(全局替换)

${var/#old/new}

用new替换${var}中开头部分与old匹配的部分

${var/%old/new}

用new替换${var}中结尾部分与old匹配的部分

需要注意的是old中可以使用通配符。var可以是@或者*,表示对每个位置参数进行替换

代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost ~]# var="shell kubernetes mysql"
[root@localhost ~]# echo ${var#l}
shell kubernetes mysql
[root@localhost ~]# echo ${var/e/i}
shill kubernetes mysql
[root@localhost ~]# echo ${var//e/i}
shill kubirnitis mysql
[root@localhost ~]# echo ${var/#ee/i}
shell kubernetes mysql
[root@localhost ~]# echo ${var/%ee/i}
shell kubernetes mysql

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档