1

我在我的 linux 机器中安装了一个名为 my-scheduler-1.1.0-1112 的程序

当我做 rpm -qa | grep my,它列出如下所示:

my-scheduler-1.1.0-1112

我想要一个可以提取 1.1.0-1112 的命令,它是我的 shell 脚本中的版本部分。

在 shell 脚本中提取它的命令是什么?

4

2 回答 2

3

对于这个问题,您可以尝试使用 rpm 的--queryformat参数。

像:

rpm -qa --queryformat '%{NAME}' | grep my

应该打印

my-scheduler

没有版本字符串...什么比用 sed 或类似的东西更好。因为你可以得到类似package-1.0.3-rc2或so..

对于版本发布:使用:

--queryformat "%{VERSION}-%{RELEASE}"

也许会很有用阅读http://www.rpm.org/max-rpm/ch-queryformat-tags.html - 这里有很多有用的查询格式标签,所以你可以直接得到你想要的和你想要的格式想要,无需脚本...

于 2012-08-01T19:55:47.930 回答
1

不确定您可能会遇到哪些其他版本字符串,但您可以尝试:

sed -e 's/^[^0-9]*-//g'

这是一个sed替换。它匹配正则表达式^[^0-9]*-,即:

  • 从字符串的开头开始
  • 匹配尽可能多的非数字
  • 那么下一个字符是-

它替换了与空白匹配的所有内容,基本上将其删除。这应该留下版本字符串之后的所有内容。

于 2012-08-01T19:35:15.560 回答