最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

全球观察:关于shell变量值的截取-通过分隔符-去除前后匹配到的内容

来源:博客园


【资料图】

最近在工作中需要取一个变量的一部分值,举例说明,先看一个变量及值的格式,如 Server="1.1.1.1-server01"

我们可以通过各种支持切片的命令得到server01这一段,如cut,sed, awk 等等命令

其实当熟悉shell编程的可以知道,shell内部的变量处理方式也是可以得到的,可以通过echo ${Server#*-}的方式,如下图

其实原理为:# 可以理解为剪切裁剪,默认以惰性模式从最左到匹配(即非贪婪模式),两个#代表的是贪婪模式 ,如果没有匹配到,则返回变量值

因为像上样的例子,我们写上两个#效果也是一样的,如果主机名不带-符号 ,那么两个#更加保险

与 # 符号还有一个功能非常类似的,则是百分号%符号

% 也默认以默认以惰性模式匹配,只是是从右边/后面匹配至最末尾,两个% 代表的贪婪模式

[qq-5201351@localhost ~]$ echo ${Server%-*}1.1.1.1[qq-5201351@localhost ~]$  echo ${Server%*-*}1.1.1.1[qq-5201351@localhost ~]$ 

关于%符号,笔者在工作中应用相对较少,像#还是可能会用到的

如:当一个文件的绝对路径字符串变量值,我们就可以使用${FileFullName##*/}的方式得到最后一个文件名(与basename命令效果一样了)

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17334586.html

关键词: