如何在Bash中简洁提取字符串最后一个连字符后的内容?
在Bash中提取字符串最后一个连字符后的内容
嘿,这个需求用Bash内置的参数扩展就能完美解决,而且是最简洁的实现方式!
直接用这个语法:${my_variable##*-}
原理说明
这里的##属于Bash的最长匹配删除操作,它会从字符串的开头开始,匹配最长的符合*-规则的部分(也就是从开头一直到最后一个-的所有内容),然后把这部分删掉,剩下的就是最后一个-后面的内容了。
示例演示
当变量是多连字符的字符串时:
my_variable="this-is-a-test" echo ${my_variable##*-}输出结果:
test当变量只有一个连字符时:
my_variable="hello-world" echo ${my_variable##*-}输出结果:
world当变量没有连字符时,这个语法会直接返回原字符串:
my_variable="justplainstring" echo ${my_variable##*-}输出结果:
justplainstring
这个方法的最大好处是不需要调用awk、sed这类外部工具,完全依赖Bash内置功能,执行效率更高,代码也更简洁易读。
内容的提问来源于stack exchange,提问作者Andy Cribbens
相关产品推荐
相关产品推荐

