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