그래서 bash / 실행 파일을 만들려고하는데 시스템의 Ubuntu 버전 번호를 알아야합니다. 온라인에서 찾은 모든 방법은로 구성되어 lsb_release -r있지만 변수로 출력 할 수는 없습니다.
Ubuntu의 현재 버전을 가져 와서 쉘 실행 파일에 변수로 저장하는 방법이 있습니까?
그래서 bash / 실행 파일을 만들려고하는데 시스템의 Ubuntu 버전 번호를 알아야합니다. 온라인에서 찾은 모든 방법은로 구성되어 lsb_release -r있지만 변수로 출력 할 수는 없습니다.
Ubuntu의 현재 버전을 가져 와서 쉘 실행 파일에 변수로 저장하는 방법이 있습니까?
답변:
Var=$(lsb_release -r)
echo "$Var"
트릭을해야합니다.
숫자 부분에만 다음을 추가하십시오.
NumOnly=$(cut -f2 <<< "$Var")
echo "$NumOnly"
lsb-release변수 파일/usr/bin/lsb_release파이썬 스크립트입니다. 파이썬 언어를 잘 소개하는 짧은 스크립트입니다. 다른 사람들이 언급했듯이 버전 번호를 얻는 더 짧은 방법은입니다 lsb_release -sr.
이 /etc/lsb-release파일은 lsb_release -a명령에서 제공 한 것과 동일한 정보로 환경 변수를 정의합니다 .
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
을 사용하여 언제든지 이러한 환경 변수를 포함 할 수 있습니다 . /etc/lsb-release. 터미널에서 테스트하려면
$ . /etc/lsb-release
$ echo $DISTRIB_RELEASE
16.04
$ echo $DISTRIB_DESCRIPTION
Ubuntu 16.04.6 LTS
Release: 18.04. 작동합니다 . 출력 합니다. 그러나 숫자를 얻는 방법이 있습니까? 스크립트의 if / else 함수에서이 변수를 사용할 수 있기를 원합니다. if / else의 목적은 우분투 배포판에 맞는 올바른 버전의 응용 프로그램을 다운로드하는 것입니다.
다른 방법은 /etc/os-release파일을 대신 사용하는 것입니다. 다음은 쉘 변수 목록으로 형식화됩니다.
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
따라서 파싱하는 쉬운 방법은 단순히 source파일 을 읽는 것입니다 .
$ . /etc/os-release
$ echo $NAME
Ubuntu
$ echo $VERSION
18.04.2 LTS (Bionic Beaver)
$ echo $PRETTY_NAME
Ubuntu 18.04.2 LTS
$ echo $VERSION_ID
18.04
이러한 모든 변수를 불필요하게 설정하지 않으려면 파일을 서브 쉘 에 소싱하고 필요한 변수를 에코 한 후 서브 쉘을 종료하십시오.
$ ( . /etc/os-release ; echo $VERSION_ID)
18.04
또는 항상 파일을 직접 구문 분석 할 수 있습니다.
$ grep -oP 'VERSION_ID="\K[\d.]+' /etc/os-release
18.04
이 lsb_release명령은 -s(또는 --short) 옵션을 지원 하여 정보의 종류를 나타내는 헤더가 아닌 요청한 정보 만 인쇄합니다.
버전 번호 만 얻으려면 다음과 같이 실행하면 충분합니다.
lsb_release -sr
예를 들어 Ubuntu 18.04 LTS에서는 다음과 같이 출력됩니다.
18.04
WinEunuuchs2Unix 's answer 의 메소드와 마찬가지로 명령 대체 를 사용 하여이 출력을 쉘 변수에 지정 하는 것이 여전히 합리적 입니다. ver변수가 릴리스 번호를 보유 하기를 원한다고 가정하십시오 .
ver="$(lsb_release -sr)"
을 사용하면을 사용 -s하여 숫자를 파싱 할 필요가 없습니다 cut.sed , grep, awk,의 더 복잡한 형태의 매개 변수 확장 등이.
이 사용법에서 " "따옴표 는 선택 사항이지만 일반적으로 인용 매개 변수 확장을 제안합니다 하지 않는 이유를 제외하고 및 기타 셸 확장을 합니다.