0

RedHatを使用しているので、Releaseフィールドの値を取得する必要があります。例として「wget」を取り上げます。

これが私が得ると期待される出力です

WGET:    1.4.el6

これがrpm-qiwgetからの出力です

[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

リリースフィールドから「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のインデックスを取得します
  • 15とBの間のサブ文字列を取得します

現在のスクリプトで「RELwg=rpm -qi wget」の間のスペースを削除すると、次のようなエラーが発生します。

./GetRPMVersions.sh:12行目:-qi:コマンドが見つかりません

主に私の現在の苦境は、rpm-qiwgetの出力を追加することです。grep変数にリリースします。

文字列操作に関する入力は大歓迎です。

4

2 に答える 2

1

何かのようなもの

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

これはどう:

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