출력에서 버전 번호를 일치시키는 방법

출력에서 버전 번호를 일치시키는 방법

다음을 호출하여 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을 종료합니다.

관련 정보