0

我在 RedHat 上,我需要获取 Release 字段中的值。以“wget”为例。

这是我期望得到的输出

WGET:    1.4.el6

这是 rpm -qi wget 的输出

[luke@machine ~]# rpm -qi wget
Name        : wget                         Relocations: (not relocatable)
Version     : 1.12                              Vendor: Red Hat, Inc.
Release     : 1.4.el6                       Build Date: Mon May 10 14:56:18 2010
Install Date: Wed Oct  3 16:48:58 2012         Build Host: x86-012.build.bos.redhat.com
Group       : Applications/Internet         Source RPM: wget-1.12-1.4.el6.src.rpm
Size        : 1877597                          License: GPLv3+ and GFDL
Signature   : RSA/8, Mon Aug 16 21:21:35 2010, Key ID 199e2f91fd431d51
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL         : http://wget.sunsite.dk/
Summary     : A utility for retrieving files using the HTTP or FTP protocols

如何编写脚本以从 Release 字段中提取“1.4.el6”。

我目前有

#!/bin/bash
RELwg= rpm -qi wget
# Do string manipulation of $RELwg here
wg="WGET:   "
echo $wg$RELwg

但这是我得到的输出;

Release     : 1.4.el6                       Build Date: Mon May 10 14:56:18 2010
WGET:

我知道我必须进行一些字符串提取才能获得号码。

  • 获取 1 的索引,似乎总是恒定在 15
  • 获取 B 在 Build Date 中的索引
  • 获取介于 15 和 B 之间的子字符串

在我当前的脚本中删除“RELwg = rpm -qi wget”之间的空格,我只是得到一个错误说

./GetRPMVersions.sh:第 12 行:-qi:找不到命令

主要是我目前的困境是添加 rpm -qi wget | 的输出 grep 释放到一个变量。

欢迎任何关于字符串操作的输入。

4

2 回答 2

1

这个怎么样:

RELwg=$(rpm -q --queryformat='%{RELEASE}' wget)
于 2012-10-09T07:14:39.010 回答
1

就像是

RELwg=$(rpm -qi wget | awk -- '/^Release/ { print $3 }')
于 2012-10-08T17:45:42.403 回答