호스팅 서버를 설정하고 구성하는 데 사용하는 오픈 소스 셸/bash 스크립트가 있고, cloudflare를 설치하기 위해 다음을 사용하여 RHEL 버전을 가져옵니다.이 명령:
RHEL_VERSION=$(rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release) );
문제는 마이너 버전이 존재하면 메이저 버전뿐만 아니라 해당 마이너 버전도 반환된다는 점이다. 위의 cmd를 사용하면 다음이 반환됩니다 7.2
. 문제는 주 버전 번호만 필요하다는 것입니다.
나는 아마도 문자열의 일부를 얻기 위해 , 그런 다음 , 등 rpm -q --whatprovides redhat-release
을 반환하는 것을 사용할 수 있을 것이라고 생각했습니다.cloudlinux-release-7.2-1.el7.x86_64
sed
awk
el7
패키지 URL을 생성할 때 이 문자열을 사용하려면 다음이 필요합니다.
PACKAGE_URL="http://pkg.cloudflare.com/cloudflare-release-latest.el${RHEL_VERSION}.rpm"
답변1
주요 버전 구성 요소를 가로채려면 다음을 수행하세요.
... | grep -Eo '^[0-9]*'
-o
이 확장 옵션은 grep
일치하는 부분만 인쇄합니다. 여기서 첫 번째 숫자 앞에는 점 문자가 옵니다.
답변2
$ RHEL_VERSION=7.2-1.el6
$ echo "${RHEL_VERSION%%[!0-9]*}"
7
$ echo "${RHEL_VERSION%%-*}"
7.2
$ echo "${RHEL_VERSION##*.}"
el6
$ echo "${RHEL_VERSION##*[!0-9]}"
6
답변3
나는 아니에요회전 속도이 시스템에서는 할 수 있었지만 나는 이것을 할 수 있었습니다세게 때리다:
PROVIDED=cloudlinux-release-7.2-1.el7.x86_64
RHEL_VERSION=`echo $PROVIDED | sed 's/^.*-release-\([0-9]\).*/\1/'
echo $RHEL_VERSION
" 7
"을 출력합니다.
필요한 경우 -release-
" "를 보다 적절한 정규식으로 바꿀 수 있습니다.
다음을 시도해 볼 수 있습니다.
echo $PROVIDED | sed -ne 's/^[^-]*-\([^-]*\)-.*$/\1/p'
release
나에게는 " "이(가) 반환됩니다.[--버전: sed(GNU sed) 4.2.2].
답변4
상담을 받아보실 수도 있습니다이 훌륭한 답변운영 체제 이름(및 버전)을 안정적으로 결정하는 것과 관련됩니다. 해당 답변을 바탕으로 다음을 수행할 수 있습니다.
RHEL_VERSION="$(lsb_release -r | awk '{print $NF}')"
그런 다음 제공된 다른 답변을 사용하여 주요 버전 번호를 추출하십시오. 장점은 이 접근 방식이 RHEL보다 더 많은 배포판에서 작동한다는 것입니다.
버전 번호가 순전히 숫자(소수점으로 구분된 주요 번호와 부 번호)일 것이라고 확신하는 경우 모든 작업을 한 번에 수행할 수 있습니다.
RHEL_MAJOR_VERSION="$(lsb_release -r|awk '{printf "%d\n",$N}')"