커널이 4.1 이상인지 확인하려면 쉘 스크립트가 필요합니다.

커널이 4.1 이상인지 확인하려면 쉘 스크립트가 필요합니다.

커널이 4.1 이상인지 확인하고, 커널이 4.1 이상이라면 스크립트를 실행하는 스크립트가 필요합니다. 그렇지 않으면 도와주세요. - 프라즈왈

이와 비슷하지만 커널 검사를 사용하면

  if ! [ -x "$(command -v iptables)" ]; then
    echo "Error: iptables is not installed, please install iptables." >&2
    exit
  fi
#!/bin/bash
version_above_4(){
    # check if $BASH_VERSION is set at all
    [ -z $BASH_VERSION ] && return 1

    # If it's set, check the version
    case $BASH_VERSION in 
        4.*) return 0 ;;
        ?) return 1;; 
    esac
}

if version_above_4
then
    echo "Good"
else
    echo "No good"
fi

답변1

이 시도:

#!/usr/bin/env bash
VERSION_LIMIT=4.1
CURRENT_VERSION=$(uname -r | cut -c1-3)
if (( $(echo "$CURRENT_VERSION > $VERSION_LIMIT" |bc -l) )); then
    echo " Kernel version: $CURRENT_VERSION > Version Limit: $VERSION_LIMIT "
    return 0
else
    echo " Kernel version: $CURRENT_VERSION < Version Limit: $VERSION_LIMIT "
    return 1
fi

답변2

이것은 당신이 원하는 것을 할 것입니다. 나는 uname -r커널 버전을 인쇄한 다음 awk마침표로 나누고 주 버전 번호와 부 버전 번호를 확인하는 데 사용합니다. version_over_4_11 또는 0을 반환합니다.

#!/bin/bash

version_over_4_1(){
    return $(uname -r | awk -F '.' '{
        if ($1 < 4) { print 1; }
        else if ($1 == 4) {
            if ($2 <= 1) { print 1; }
            else { print 0; }
        }
        else { print 0; }
    }')
}

if version_over_4_1
then
    echo "Kernel > 4.1"
else
    echo "Kernel <= 4.1"
fi

답변3

#! /usr/bin/env bash

version_over_4_1(){
  MAJOR_VERSION=$(uname -r | awk -F '.' '{print $1}')
  MINOR_VERSION=$(uname -r | awk -F '.' '{print $2}')
  if [ $MAJOR_VERSION -ge 4 ] && [ $MINOR_VERSION -gt 1 ] || [ $MAJOR_VERSION -ge 5 ] ; then
    return 0
  else
    return 1
  fi
}

awk이는 두 번 호출해야 하는 단점이 있지만 uname그렇지 않은 방법보다 더 직관적일 수 있습니다.

#! /usr/bin/env bash

version_over_4_1(){
  read MAJOR_VERSION MINOR_VERSION <<<$(uname -r | awk -F '.' '{print $1, $2}')
  if [ $MAJOR_VERSION -ge 4 ] && [ $MINOR_VERSION -gt 1 ] || [ $MAJOR_VERSION -ge 5 ] ; then
    return 0
  else
    return 1
  fi
}

이는 각각 한 번만 호출 awk하지만 uname원하는 만큼 직관적이지 않을 수 있습니다.

답변4

# Lets check the kernel version
function kernel-check() {
  CURRENT_KERNEL_VERSION=$(uname --kernel-release | cut --delimiter="." --fields=1-2)
  CURRENT_KERNEL_MAJOR_VERSION=$(echo "${CURRENT_KERNEL_VERSION}" | cut --delimiter="." --fields=1)
  CURRENT_KERNEL_MINOR_VERSION=$(echo "${CURRENT_KERNEL_VERSION}" | cut --delimiter="." --fields=2)
  ALLOWED_KERNEL_VERSION="3.1"
  ALLOWED_KERNEL_MAJOR_VERSION=$(echo ${ALLOWED_KERNEL_VERSION} | cut --delimiter="." --fields=1)
  ALLOWED_KERNEL_MINOR_VERSION=$(echo ${ALLOWED_KERNEL_VERSION} | cut --delimiter="." --fields=2)
  if [ "${CURRENT_KERNEL_MAJOR_VERSION}" -lt "${ALLOWED_KERNEL_MAJOR_VERSION}" ]; then
    echo "Error: Kernel ${CURRENT_KERNEL_VERSION} not supported, please update to ${ALLOWED_KERNEL_VERSION}."
    exit
  fi
  if [ "${CURRENT_KERNEL_MAJOR_VERSION}" == "${ALLOWED_KERNEL_MAJOR_VERSION}" ]; then
    if [ "${CURRENT_KERNEL_MINOR_VERSION}" -lt "${ALLOWED_KERNEL_MINOR_VERSION}" ]; then
      echo "Error: Kernel ${CURRENT_KERNEL_VERSION} not supported, please update to ${ALLOWED_KERNEL_VERSION}."
      exit
    fi
  fi
}

kernel-check

아직도 이것을 찾고 있는 사람을 위해.

관련 정보