Bash 함수 조건부 명령 및 인수는 Ubuntu를 Alpine으로 이상하고 잘못 해석합니다.

Bash 함수 조건부 명령 및 인수는 Ubuntu를 Alpine으로 이상하고 잘못 해석합니다.

번들 관리자를 감지하기 위해 코드를 재구성하고 값을 캡처하기 위해 새 매개변수를 추가했습니다.

get_package_manager_install()
{
  if   [ -x "$(command -v $1)" ]; then echo "$1 add --no-cache $2";  # apk add --no-cache
  elif [ -x "$(command -v $1)" ]; then echo "$1 install -y $2";      # apt install -y
  elif [ -x "$(command -v $1)" ]; then echo "$1 install -y $2";      # dnf install -y
  elif [ -x "$(command -v $1)" ]; then echo "$1 -av $2";             # emerge -av
  elif [ -x "$(command -v $1)" ]; then echo "$1 -S --noconfirm $2";  # pacman -S --noconfirm
  elif [ -x "$(command -v $1)" ]; then echo "$1 in $2";              # zypper in
  else        
    echo "Unknown manager manager" &>/dev/null
  fi
}

그리고 두 개의 매개변수를 입력하여 함수를 실행합니다.

get_package_manager_install 'apk'     "musl-locale"
get_package_manager_install 'apt'     "locales locales-all"
get_package_manager_install 'dnf'     "glibc"
get_package_manager_install 'emerge'  "sys-libs/glibc"
get_package_manager_install 'pacman'  "glibc"
get_package_manager_install 'zypper'  "glibc"

우분투에서 실행했는데 결과는 다음과 같습니다.

apt add --no-cache locales locales-all

이 함수는 Ubuntu가 Alpine이라고 생각하는 것 같으 if [ -x "$(command -v $1)" ]; then echo "$1 add --no-cache $2"므로 elif [ -x "$(command -v $1)" ]; then echo "$1 install -y $2"현재 locales locales-all.

관련 정보