2 变量进阶
2.1 变量实践
2.1.1 高级赋值
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习
基础知识
简介
所谓的高级赋值,是另外的一种变量值获取方法,这里涉及到更多我们学习之外的一些shell内置变量格式,其实这部分的内容主要还是在字符串的基础上,如何更精细的获取特定的信息内容:主要涉及到的内容样式如下:
字符串截取按分隔符截取: # 右 % 左${file#/} 删除匹配结果,保留第一个/右边的字符串${file##/} 删除匹配结果,保留最后一个/右边的字符串${file%/} 删除匹配结果,保留第一个/左边的字符串${file%%/} 删除匹配结果,保留最后一个/左边的字符串注意:匹配内容的正则表达式,尽量不要出现特殊边界字符
字符串替换${file/dir/path} 把第一个dir替换成path:/path1/dir2/dir3/n${file//dir/path} 把所有dir替换成path:/path1/path2/path3/n${file/#dir/path} 将从左侧能匹配到的dir,则替换成 path 然后返回;否则直接返回 ${var}。${file/%dir/path} 将从右侧能匹配到的dir,则替换成 path 然后返回;否则直接返回 ${var}。注意:如果匹配内容使用的是正则符号,应该注意正则符号的写法
字符串转换${file^^} 把file中的所有小写字母转换为大写${file,,} 把file中的所有大写字母转换为小写
简单实践
实践1-字符串截取
字符串截取示例
[root@localhost ~]# string=abc12342341
[root@localhost ~]# echo ${string#a*3}
42341
[root@localhost ~]# echo ${string#c*3}
abc12342341
[root@localhost ~]# echo ${string#*c1*3}
42341
[root@localhost ~]# echo ${string##a*3}
41
[root@localhost ~]# echo ${string%3*1}
abc12342
[root@localhost ~]# echo ${string%%3*1}
abc12
字符串截取赋值
[root@localhost ~]# file=/var/log/nginx/access.log
[root@localhost ~]# filename=${file##*/}
[root@localhost ~]# echo $filename
access.log
[root@localhost ~]# filedir=${file%/*}
[root@localhost ~]# echo $filedir
/var/log/nginx
实践2-字符串替换
字符串替换示例
[root@localhost ~]# str="apple, tree, apple tree, apple"
[root@localhost ~]# echo ${str/apple/APPLE}
APPLE, tree, apple tree, apple
[root@localhost ~]# echo ${str//apple/APPLE}
APPLE, tree, APPLE tree, APPLE
[root@localhost ~]# echo ${str/#apple/APPLE}
APPLE, tree, apple tree, apple
[root@localhost ~]# echo ${str/%apple/APPLE}
apple, tree, apple tree, APPLE使用正则的情况下,代表尽可能多的匹配
[root@localhost ~]# file=dir1@dir2@dir3@n.txt
[root@localhost ~]# echo ${file/#d*r/DIR}
DIR3@n.txt
[root@localhost ~]# echo ${file/%3*/DIR}
dir1@dir2@dirDIR
实践3-字符串转换
[root@localhost ~]# str="apple, tree, apple tree, apple"
[root@localhost ~]# upper_str=${str^^}
[root@localhost ~]# echo ${upper_str}
APPLE, TREE, APPLE TREE, APPLE
[root@localhost ~]# lower_str=${upper_str,,}
[root@localhost ~]# echo ${lower_str}
apple, tree, apple tree, apple
小结