变量删除和替换 案例:从头开始匹配,将符合最短的数据删除 (#) variable_1=I love you, Do you love me echo $variable_1 variable_2=${variable_1#*ov} echo $variable_2 案例:从头开始匹配,将复合最短的数据删除(##) varible_3=${variable_1##*ov} echo $varible_3 案例:替换字符串,只替换第一次匹配成功的(/) echo $PATH var6=${PATH/bin/BIN} echo $var6 案例:替换字符串,符合条件的全部替换 ( 在Shell脚本编程中,变量是存储数据的基本单元,它们可以用来保存文本字符串、数字、路径等信息。本文将深入探讨Shell变量的一些高级用法,包括变量删除、替换以及字符串处理,这些都是在编写Shell脚本时非常实用的功能。 我们来看变量删除的两种方法。在示例中,`#` 和 `##` 运算符用于从字符串的开头删除匹配的部分。`#*ov` 会匹配并删除从字符串开头开始直到第一个 "ov" 的最短子串,而 `##*ov` 会删除最长的匹配。例如: ```bash variable_1="I love you, Do you love me" variable_2=${variable_1#*ov} variable_3=${variable_1##*ov} ``` 在上面的例子中,`variable_2` 将得到 "love you, Do you love me",因为 "I " 是最短的以 "ov" 开始的子串。而 `variable_3` 将得到 "me",因为 "I love you, Do you love" 是最长的匹配。 接着,我们学习了字符串替换。`/` 运算符允许我们替换字符串中的第一次匹配。例如: ```bash PATH=/usr/local/bin:/usr/bin:/bin var6=${PATH/bin/BIN} ``` 在这个例子中,`var6` 将得到 "/usr/local/BIN:/usr/bin:/bin",因为 `/bin` 被第一次出现的 "bin" 替换成了 "BIN"。 如果要替换所有匹配的实例,可以使用 `//` 运算符,如: ```bash var7=${PATH//bin/BIN} ``` 此时,`var7` 中所有的 "/bin" 都被替换为 "/BIN"。 接下来,我们了解变量测试。在Shell中,`${str-expr}` 结构用于检查变量 `str` 是否已定义。如果未定义,`var` 的值将为 `expr`;如果 `str` 已定义,`var` 的值就是 `str` 的值。 字符串处理方面,我们可以计算字符串的长度: ```bash var="hello world" len=${#var} len=`expr length "$var"` ``` 这里,`${#var}` 返回 "hello world" 的长度,即11。`expr length` 也是另一种获取长度的方法。 此外,还可以获取子串在字符串中的索引位置、查找不存在的子串以及计算特定子串的长度: ```bash ind=`expr index "$var" start` ind=`expr index "$var" uniq` sub_len=`expr match "$var1" app` ``` 在这些例子中,`expr index` 返回第一个匹配到的子串的起始位置,`expr match` 则用于计算匹配的子串长度。 抽取字串是另一个重要的字符串操作。我们可以从指定位置开始提取子串: ```bash var1="kafka hadoop yarn mapreduce" sub_str1=${var1:10} sub_str2=${var1:10:5} sub_str3=${var1: -5} sub_str3=${var1: (-5)} sub_str3=${var1: -5:2} ``` 这些例子演示了如何通过不同方式提取 `var1` 中的子串,包括从某个位置开始直至字符串结束、提取固定长度的子串、从末尾开始提取子串等。 我们看到一个完整的脚本,该脚本接收用户输入,根据用户选择执行不同的字符串处理任务,如打印字符串长度、删除或替换 "Hadoop" 子串。这个脚本通过定义多个函数实现了功能模块化,提高了代码的可读性和可维护性。 理解并熟练掌握Shell变量的高级用法,以及相关的字符串处理技巧,对于编写高效且灵活的Shell脚本至关重要。在日常工作中,这些技能可以帮助我们更轻松地自动化各种系统管理任务。
剩余9页未读,继续阅读
- 粉丝: 5
- 资源: 920
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 使用NetBeans连接SQLserver2008数据库教程中文WORD版最新版本
- XPath实例中文WORD版最新版本
- XPath语法规则中文WORD版最新版本
- XPath入门教程中文WORD版最新版本
- ORACLE数据库管理系统体系结构中文WORD版最新版本
- Sybase数据库安装以及新建数据库中文WORD版最新版本
- tomcat6.0配置oracle数据库连接池中文WORD版最新版本
- hibernate连接oracle数据库中文WORD版最新版本
- MyEclipse连接MySQL的方法中文WORD版最新版本
- MyEclipse中配置Hibernate连接Oracle中文WORD版最新版本
评论0