UbuntuとCentOSディストリビューションで実行できるシンプルなbashスクリプトに取り組んでおり(DebianとFedora / RHELのサポートがあればプラスになります)、スクリプトが実行しているディストリビューションの名前とバージョンを知る必要があります(リポジトリの作成など、特定のアクションをトリガーするため)。これまでのところ、これは次のとおりです。
OS=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VERSION=$(awk '/DISTRIB_RELEASE=/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | sed 's/[.]0/./')
if [ -z "$OS" ]; then
OS=$(awk '{print $1}' /etc/*-release | tr '[:upper:]' '[:lower:]')
fi
if [ -z "$VERSION" ]; then
VERSION=$(awk '{print $3}' /etc/*-release)
fi
echo $OS
echo $ARCH
echo $VERSION
これは、リリース名として戻るubuntu
かcentos
(他の人は試したことがない)動作しているようです。しかし、私はこれを見つけるより簡単で信頼性の高い方法がなければならないと感じています-それは本当ですか?
RedHatでは機能しません。/ etc / redhat-releaseの内容:Redhat Linux Entrepriseリリース5.5
だから、バージョンは3番目の単語ではありません、あなたが使う方が良いでしょう:
OS_MAJOR_VERSION=`sed -rn 's/.*([0-9])\.[0-9].*/\1/p' /etc/redhat-release`
OS_MINOR_VERSION=`sed -rn 's/.*[0-9].([0-9]).*/\1/p' /etc/redhat-release`
echo "RedHat/CentOS $OS_MAJOR_VERSION.$OS_MINOR_VERSION"
*
まし+
たetc/*-release
。
uname -rv | grep -i "name_of_distro"
、終了コードを使用するのはなぜですか?
+-release
動作しますか?事実上/etc/lsb-release
、それがになると仮定しているので、おそらくそれを単に呼び出してください。