在 bash 中的最后一个所需字符处拆分字符串

Split string on last desired character in bash

我有一个这样命名的文件:my-file-1.2.0.jar

我想通过拆分最后一个 - 来提取此文件的版本。 因此我会有以下输出:1.2.0.jar

如果可以使用相同的命令获得此输出,我也想摆脱 .jar:1.2.0

如何使用 bash 实现?

使用参数扩展:

#! /bin/bash
filename=my-file-1.2.0.jar
version=${filename##*-}
version=${version%.jar}
echo "$version"

## 从左边删除最大的匹配模式。 % 从右侧删除最短的匹配模式(但 .jar 不包含通配符,因此使用 %% 进行最长匹​​配同样有效)。

这是使用 extglob 一步完成此操作的方法:

shopt -s extglob
s='my-file-1.2.0.jar'
echo "${s//+(.jar|*-)}"

1.2.0