= 기호 [중복] 뒤에 별도로 os-release 텍스트 파일에 값을 저장합니다.

= 기호 [중복] 뒤에 별도로 os-release 텍스트 파일에 값을 저장합니다.

os-version 값을 명령에 저장하고 싶습니다 cat /etc/os-release. cat /etc/os-release의 출력은 다음과 같습니다.

VERSION="4.4"
ID="someId"
ID_LIKE="someIdLike"

아포스트로피나 ​​"VERSION" 텍스트 없이 버전 "4.4"를 변수에 저장하는 쉘 명령을 원합니다. 내가 지금까지 한 일은

variable==`grep 'VERSION' /etc/os-release

이것은 나에게 변수="VERSION="4.4""를 제공합니다. 저는 단지 버전의 숫자 값인 4.4를 원합니다.

답변1

Ubuntu 매뉴얼에는 파일이 셸과 호환되는 간단한 변수 할당을 포함해야 하며 파일을 얻을 수 있어야 한다고 os-release명시 되어 있습니다./etc/os-release

기본 파일 형식은 os-release환경과 유사한 쉘 호환 변수 할당의 줄바꿈으로 구분된 목록입니다. 구성은 쉘 스크립트에서 얻을 수 있습니다 [...]

$ ( . /etc/os-release && printf '%s\n' "$VERSION" )
20.04.3 LTS (Focal Fossa)

위에서는 대화형 환경을 오염시키지 않기 위해 하위 쉘에 파일을 가져왔습니다. 쉘 스크립트에서는 아마도 이에 대해 별로 신경 쓰지 않을 것입니다. 파일을 가져온 후 변수의 값을 인쇄합니다 VERSION.

VERSION_ID패치 버전 번호 없이 기본 버전 번호가 내 시스템의 변수에 제공됩니다. 그래도 VERSION표준 변수 확장을 사용하여 첫 번째 공백 뒤의 모든 항목을 제거하면 변수에 포함된 패치 버전을 얻을 수 있습니다.

$ ( . /etc/os-release && printf '%s\n' "${VERSION%% *}" "$VERSION_ID" )
20.04.3
20.04

시스템에서는 VERSION변수에 문자열 4.4만 포함되어 있는 것으로 나타나므로 추가 처리 없이 파일을 가져와 사용할 수 있습니다 "$VERSION".

답변2

lsb_release버전 번호를 얻는 데 사용됩니다 .

variable=$(lsb_release -rs)

man lsb_release:

-r, --release       displays release number of distribution.
-s, --short   displays all of the above information in short output format.

답변3

위의 답변은 정말 도움이 되었지만 다른 해결책을 찾았으므로 감사합니다.https://unix.stackexchange.com/a/498788이는 값을 os-release다음과 같이 저장할 수 있음을 보여줍니다.

VERSION=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
echo $VERSION

관련 정보