Shell中常用的变量处理、字符串操作
时间:2022-07-24
本文章向大家介绍Shell中常用的变量处理、字符串操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
变量赋值
[root@linux /]# curl='www.endvv.com'
[root@linux /]# echo $curl
www.endvv.com
获取变量长度
[root@linux /]# echo ${#curl}
13
截取变量
从指定位置开始截取字符串
[root@linux /]# echo ${curl:4} # :4 表示从curl变量值的第4个字符开始,截取到变量值的末尾
endvv.com
从倒数第4个字符开始截取,截取到字符串的末尾
[root@linux /]# echo ${curl:0-4}
.com
[root@linux /]# echo ${curl: -4}
.com
从指定位置开始截取字符串,并且指定截取字符的长度
从变量的第4个字符开始截取,截取5个字符的长度
[root@linux /]# echo ${curl:4:5}
endvv
0-9:5表示从倒数第9个字符开始,向后截取5个字符
[root@linux /]# echo ${curl:0-9:5}
endvv
0-9:-4表示从倒数第9个字符开始,向后截取所有字符,当同时指定截取长度为":-4"时,表示从倒数第9个字符向后截取所有字符以后,删除截取以后的字符的最后4个字符,也可以理解成截取最后9个字符的前5个字符。
[root@linux /]# echo ${curl:0-9:-4}
endvv
变量删除
从左往右删除
使用 "#*." 即可删除字符串中从左向右数第一个 "." 以及其左侧的全部字符
[root@linux /]# echo ${curl#*.}
endvv.com
把上面的 . 替换成其他字符也可以
[root@linux /]# echo ${curl#*e} "#*e"表示删除字符串中从左向右第一个遇到的e,以及其左侧的字符
ndvv.com
"##*." 表示删除字符串中从左向右最后一个遇到的 "." ,以及其左侧的字符
[root@linux /]# echo ${curl##*.}
com
从右往左删除
"%/*"表示删除字符串中从右向左第一个遇到的 "/" ,以及其右侧的字符
[root@linux /]# test="/www/server/nginx/sbin/nginx"
[root@linux /]# echo ${test%/*}
/www/server/nginx/sbin
也可以将上面的"/"替换成别的字符
[root@linux /]# curl="www.endvv.com"
[root@linux /]# echo ${curl%.*}
www.endvv
下面的"%%.*"表示删除字符串中从右向左最后一个遇到的 "." ,以及其右侧的字符
[root@linux /]# echo ${curl%%.*}
www
替换变量中的字符串
将curl变量中的www替换成end,但是上例中的写法,只能替换字符串中第一个遇到的www,如果字符串中包含多个"www",只有第一个"www"会被替换,其他"www"不会被替换
[root@linux /]# curl="www.endvv.com"=
[root@linux /]# echo ${curl/www/end}
end.endvv.com
如果我们想要将字符串中的所有www都替换成end,则可以使用如下语法
[root@linux /]# curl="www.www.www"
[root@linux /]# echo ${curl//www/end}
end.end.end
两种方法针对行首的字符串进行替换和针对行尾的字符串进行替换
[root@linux /]# echo ${curl/#www/end} #针对行首的字符串进行替换
end.www.www
[root@linux /]# echo ${curl/%www/end} #针对行尾的字符串进行替换
www.www.end
删除变量中的字符串
删除curl变量中的end字符串
[root@linux /]# curl="www.endvv.www"
[root@linux /]# echo ${curl/end}
www.vv.www
刚才的示例中,我们只删除了字符串中的end,如果我们想要删除字符串中的所有的"." ,则可以使用如下语法
[root@linux /]# curl="www.endvv.www"
[root@linux /]# echo ${curl//.}
wwwendvvwww
- CSS判断不同分辨率显示不同宽度布局CSS3技术支持IE6到IE8
- Hibernate详细教程
- TensorFlow中的多线程
- nginx 域名绑定 域名, nginx 域名绑定 端口
- Centos下Yum安装PHP5.5,5.6,7.0
- 请注意,我们要谈谈神经网络的注意机制和使用方法
- Configure Apache Virtual Hosts - CentOS 7
- centos7查看端口命令
- 为什么算法容易忘记之快速排序
- 为什么算法容易忘记之插入排序
- 让你又爱又恨的推荐系统--程序猿篇
- C#使用RSA证书文件加密和解密示例
- Python调用C函数的方法以及如何编写Python的C扩展
- C# 中使用 RSA加解密算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mysql拼接查询结果
- 手把手教你如何重建二叉树(超精彩配图)
- 一文搞定插入排序算法
- LeetCode 107. 二叉树的层次遍历 II
- LeetCode 103. 二叉树的锯齿形层次遍历
- 我是怎么一步一步调试出来二叉树的遍历(超精彩配图),二叉树遍历再也不用愁了
- 重中之重的二分查找
- LeetCode 剑指Offer 面试题27. 二叉树的镜像
- 一文搞定选择排序算法
- 一文搞定冒泡排序算法
- 剑指Offer LeetCode 面试题25. 合并两个排序的链表
- LeetCode 20200601 打卡 1431. 拥有最多糖果的孩子
- 剑指Offer LeetCode 面试题24. 反转链表
- 剑指Offer LeetCode 面试题22. 链表中倒数第k个节点
- 剑指Offer LeetCode 面试题18. 删除链表的节点