博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell中的四种模式匹配
阅读量:7115 次
发布时间:2019-06-28

本文共 1357 字,大约阅读时间需要 4 分钟。

POSIX为shell为进行模式匹配提供了四种参数替换结构(老版本的shell可能不支持),每种结构有两个参数:变量名(或变量号)及模式。
第一种模式:
   ${variable%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最短的匹配模式
第二种模式:
   ${variable%%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
第三种模式:
   ${variable#pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern开始,如果是,就从命令行把variable中的内容去掉左边最短的匹配模式
第四种模式:
   ${variable##pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
这四种模式中都不会改变variable的值,其中,只有在pattern中使用了*匹配符号时,%和%%,#和##才有区别。

[root@root shell]# var=testcase

[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var%s*e} 从最右边删除最短匹配
testca
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var%%s*e} 从最右边删除最长匹配
te
[root@root shell]# echo $var  变量没有改变
testcase
[root@root shell]# echo ${var#?e} 从最左边删除最短匹配
stcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#*e}  从最左边删除最短匹配
stcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var##*e} 从最左边删除最长匹配,即删除所有

[root@root shell]# echo $var

testcase
[root@root shell]# echo ${var##*s} 从最左边删除最长匹配
e
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#test} 删除test
case
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#tests} 没有匹配
testcase
[root@root shell]#

另外
var=97%
var=${var%s?}
echo $var #打印97

转载地址:http://frghl.baihongyu.com/

你可能感兴趣的文章
verilog语法实例学习(13)
查看>>
iOS/oc取消arc[转]
查看>>
关于硅谷的文化
查看>>
注册表单验证
查看>>
except ShortInputException,x中逗号
查看>>
Yii快速入门教程
查看>>
xshell与虚拟机对接
查看>>
关于网站编程Alex
查看>>
leetcode-804-Unique Morse Code Words
查看>>
Angular企业级开发(3)-Angular MVC实现
查看>>
递归大总结之位运算实现加法
查看>>
filter()和map()
查看>>
如何快速阅读源码
查看>>
磁盘扩容
查看>>
PHP大小写问题
查看>>
纯代码自动布局
查看>>
utf-8 转码--网址转码
查看>>
用js实现算法:冒泡排序、插入排序和快速排序
查看>>
Css学习总结(1)——20个很有用的CSS技巧
查看>>
android基础知识复习——RelativeLayout布局属性、背景、半透明设置(XML设置)
查看>>