出力でバージョン番号を一致させる方法

出力でバージョン番号を一致させる方法

以下を呼び出して、インストールされているyum infoバージョンをキャプチャできます。ambari-metrics-monitor

 yum info ambari-metrics-monitor| grep -i version |head -1
 Version     : 2.6.1.0

出力でバージョンを確認するには、2.6.1.0次のようにします。

 yum info ambari-metrics-monitor| grep -i version |head -1 |  grep "2.6.1.0"

私の考えでは、これはバージョンが指定されたワゴンと一致する正しい方法ではないということです。

それでは、出力でバージョンの浮動小数点を一致させる正しい方法は何ですか(私の例に基づいています)?

答え1

package=ambari-metrics-monitor
required_version=2.6.1.0
current_version="$( yum info $package | awk -F: '/Version/ {print $2}' )"

if [[ "$current_version" == "$required_version" ]]; then
    echo "Good to go"
else
    echo "Version mismatch - version $current_version is installed for $package"
fi

答え2

シングルawk注文する:

yum info ambari-metrics-monitor \
| awk -v ver="2.6.1.0" '$1 ~ /[vV]ersion$/ && $3 == ver{ f=1; exit }
                        END{ printf "Version %smatched\n", (f? "" : "not ") }'

出力はVersion matched次のいずれかです。Version not matched

答え3

パッケージがすでにインストールされている場合は、パラメータを使用してバージョン番号のみを--queryformat印刷し、パラメータを使用して便利に正確に一致させることができます。rpm-F-xgrep

rpm -q --queryformat %{VERSION} ambari-metrics-monitor \
| grep -qFx 2.6.10 && echo "version matched"

答え4

単にawk次のようにすることができます:

yum info ambari-metrics-monitor \
| awk -F: '/Version/{ if ($2 == " 2.6.1.0") {print "yes"} else exit 1}'

バージョン番号の前にスペースがあるため、yum一致を取得するには確認文字列に追加する必要があります。

一致する場合は印刷して0を終了しyes、一致しない場合は1を終了します。

関連情報