Shell脚本怎么写?(1-2)——Shell 变量的高级用法

Shell脚本怎么写?(1-2)——Shell 变量的高级用法

首页角色扮演代号AProject更新时间:2024-06-27

朋友们好呀,最近感冒了,身体不适,更新推迟了,万分抱歉啊。。鸿蒙liteos_a代码走读系列后续还会继续更新下去。。。特此通知一下。

好的, 废话不多说了,我们开启本期的学习之旅。

上期回顾,如果不清楚Shell变量的基础特性,请看上期:

然后在有了如何在Shell脚本中定义基础变量类型的能力之后,再继续学习下面的内容才会有比较好的效果。

今天呢,我们来学习一下Shell脚本中的变量高级用法,主要是字符串和一些Shell中的内置变量的高级用法介绍。

好的,肺部哆嗦(废话不多说),我们开始吧。

首先介绍下Shell脚本中的字符串变量的高级定义方法。

字符串变量的变换方式,可以直接在定义变量时,使用正则表达式进行替换,裁剪,匹配操作。

下面我们来看下示例如下:

对原始字符串变量的截取

如上图所示,展示了如何对原始变量字符串进行部分截取,它使用了正则语法,对原始字符串进行匹配。

其中# 单个符号后面可以跟着一个正则表达式, *// 代表匹配形如 // 结尾的子字符串。

单个#表示非贪婪匹配,即匹配到原始字符串的第一个 // 符号即完成匹配,然后把匹配到的部分截取掉,返回剩余的部分。

两个#号表示贪婪匹配,即尽可能长的使用后面的正则表达式匹配原始字符串,于是会匹配到原始字符串的第二个 // 符号,然后截取掉匹配的部分,返回剩余的部分。

上面的脚本运行结果如下图所示:你答对了吗?

Shell脚本#截取字符串结果

接下来我们继续介绍如何对原始字符串进行其它的截取方式,有了上面对#字符串截取的基础,其它方式的截取就比较容易理解了。

示例如下:

其它Shell字符串变量截取方式

然后简单说明一下, # 是删除匹配的部分,留下剩余的部分, %是留下匹配的部分,删除不匹配的部分。两者对于匹配部分字串的处理,刚好相反,一个删除它,保留剩下的,一个保留匹配到的子串,删除剩下的。

双重# 和 双重 % 都代表贪婪匹配模式,尽可能多的匹配到合适的子字符串。

然后:符号,可以后面跟数字,1:8 , 两个数字,前一个代表的是截取字符串开始位置,后一个数字代表的是截取的长度。

这都跟python 很像,不写代表截取到字符串末尾,-1 代表截取到最后一个字符等。

上面示例的运行结果如下:你答对了吗?

Shell字符串截取方式汇总,运行结果

使用Shell脚本替换原始字符串

上图是使用 / 和 // 对原始字符串进行替换,使用方法类似于linux 的sed 指令。

格式是 原始字符串/想要替换的内容/替换成的内容。

替换后的结果如下:

Shell脚本字符串替换结果

同理,其中 / 代表一次匹配, // 代表贪婪匹配,会从头到尾遍历所有符合要求的能够匹配的子字符串,然后进行全量替换。

最后,关于字符串变量的高级使用方式这里,还有一个比较常用的功能是trim , 去除字符串前后多余的空格。

这个功能的实现可以使用linux 自带的xargs 指令。

具体如下:

使用xargs命令实现trim效果

执行结果如下:

xargs 使用后,字符串前后的空格被去掉

好的,以上基本上就涵盖了Shell脚本中所有字符串高级使用方式的内容了。

最后,我们再来介绍一下Shell脚本中的几个特殊变量。

以$xx 开头的一批变量。

具体如下图所示:

以$开头的特殊Shell变量

然后我们来看一个示例,把上面所有的特殊变量都用上,来给大家一个简单的示例使用场景,加深理解和认识。

具体示例如下:

Shell特殊变量使用示例

上面的函数,循环等内容还没有讲解到,以后会给大家详细讲解。

这里暂时不需要完全理解函数和循环,只要知道函数调用了一把,入参是 “chen” “xiang” 这两个参数,返回值是2 即可。

for 循环完成的功能是依次打印所有入参的值,$@ 代表所有入参的集合。

上面的示例运行结果如下:

Shell特殊变量使用示例运行结果

你答对了吗?

好的, 本次文章我们在上一节课的基础上,重点介绍了Shell变量的高级用法。

主要包括 Shell 中字符串变量的裁剪,替换,截取,以及Shell 内置的特殊变量的含义和其使用场景。

下一期我们开始介绍Shell脚本中,简单的流程控制相关内容。如果您喜欢我分享的内容,我们下期不见不散。

最后,求一下关注。。。。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved