シェルスクリプトを使用してcmakeが3.13.4より大きいか小さいかどうかを確認する方法

シェルスクリプトを使用してcmakeが3.13.4より大きいか小さいかどうかを確認する方法

私のcmakeバージョンが3.13.4以上であることを確認したいと思います。それ以外の場合は、3.13.4より小さい場合は最新バージョンをビルドしてください。ここにスクリプトがあります。

#!/bin/sh
RESULT=$(cmake --version)
if [ "$RESULT" -ge 3.13.4 ]; then
      echo "you are using the latest version of cmake"
elif [ "$RESULT" -lt 3.13.4 ]; then
        cd /home/builduser
        mkdir cmake
        cd cmake
        apt install wget libssl-dev
        wget https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2.tar.gz
        tar -xf cmake-3.22.2.tar.gz
        cd cmake-3.22.2
        ./configure
        make install
        cd /home/builduser
        rm -rf cmake
fi

ベストアンサー1

GNUソートにはバージョンソートオプションがあります-V

cmp=3.13.4
ver=$(cmake --version | head -1 | cut -f3 -d" ")

mapfile -t sorted < <(printf "%s\n" "$ver" "$cmp" | sort -V)

if [[ ${sorted[0]} == "$cmp" ]]; then
    echo "cmake version $ver >= $cmp"
fi

おすすめ記事