在Bash中如何从字符串后面删除子字符串匹配

use*_*011 0 bash

版本= 0.1.2-2-gb12431b-3.4.5

从字符串后面的连字符开始删除子串的最佳实用程序是什么(-3.4.5).

我想要new_version = 0.1.2-2-gb12431b,删除子字符串.关于什么是正确的方法的任何建议.

Cha*_*ffy 5

参数扩展(先前的链接是相关的手册页部分):

new_version=${version%-*}
Run Code Online (Sandbox Code Playgroud)

因为这只是一个%,所以表达式被评估为非贪婪,所以它在第一个破折号处停止.

使用参数扩展可以避免对外部工具(cut,awk,sed等)的任何调用,因此效率更高.


也可以看看: