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