如何从git describe --all输出中提取标签名,自动去tags/前缀适配所有标签类型
解决方案
你可以通过Shell参数扩展直接移除可能存在的tags/前缀,该方式适配带/不带前缀的所有场景,无需额外依赖工具。
实现步骤
- 先将
git describe --all的执行结果存入变量 - 用
${变量名#tags/}语法删除开头的tags/前缀:如果字符串开头存在该前缀则移除,不存在则返回原始内容,刚好满足你的需求。
修改后的测试代码如下,运行后会输出符合预期的true:
# 读取原始返回结果 tag_raw=$(git describe --all) # 移除可能存在的tags/前缀 pure_tag=${tag_raw#tags/} if [ "$pure_tag" = "v0.1.0" ] then echo "true" else echo "false" fi
其他可选实现方式
如果你需要一行直接完成提取,可以用sed做正则替换:
pure_tag=$(git describe --all | sed 's/^tags\///')
内容的提问来源于stack exchange,提问作者Jens Meindertsma
相关产品推荐
相关产品推荐

