我正在尝试仅使用 Bash 从包名称中删除版本。我有一个解决方案,但我认为这不是最好的解决方案,所以我想知道是否有更好的方法来做到这一点。更好我的意思是更干净,更容易理解。
假设我有字符串“my-program-1.0”,我只想要“my-program”。我目前的解决方案是:
#!/bin/bash
PROGRAM_FULL="my-program-1.0"
INDEX_OF_LAST_CHARACTER=`awk '{print match($0, "[A-Za-z0-9]-[0-9]")} <<< $PROGRAM_FULL`
PROGRAM_NAME=`cut -c -$INDEX_OF_LAST_CHARACTER <<< $PROGRAM_FULL`
实际上,“包名”语法是一个 RPM 文件名,如果重要的话。
谢谢!