나는 다음 질문을 시도했습니다.
docker-compose
Dockerfile 검사를 실행 중입니다 .
내 스크립트를 보세요:
archlinux="pacman"
get_package_manager_install()
{
if [[ -x "$(command -v $1)" ]]; then
"$1 $2 $3"
else
echo "Gestor do pacote desconhecido" &>/dev/null;
fi
}
get_package_manager_install "$archlinux" "-S --noconfirm --needed" "ca-certificates curl git p7zip wget unzip zstd"
get_package_manager_install "$archlinux" "-S --noconfirm --needed" "htop micro neofetch neovim zsh"
get_package_manager_install "$archlinux" "-S --noconfirm --needed" "luit xdotool xdriinfo xorg-appres xorg-iceauth xorg-xcmsdb xorg-xgamma xorg-sessreg xorg-xdpyinfo xorg-xev xorg-xfd xorg-xfontsel xorg-xhost xorg-xkbcomp xorg-xkill xorg-xlsatoms xorg-xlsclients xorg-xlsfonts xorg-xmessage xorg-xmodmap xorg-xprop xorg-xrandr xorg-xrdb xorg-xrefresh xorg-xset xorg-xvidtune xorg-xvinfo xorg-xwininfo"
또는 ."$1 $2 $3"
나도 노력 했고$@
$*
$(echo "$@")
$(echo "${@}")
나는 또한 성공하지 못한 채 마지막 매개변수를 로 대체했습니다 " "
.' '
예를 들어 매개변수의 마지막 부분을 제거하면 git p7zip wget unzip zstd
전체가 htop micro neofetch neovim zsh
설치되지 않습니다.
답변1
-S
, --noconfirm
및 --needed
패키지를 별도의 인수로 전달해야 하므로 pacman
다음과 같습니다.
archlinux="pacman"
get_package_manager_install()
{
if command -v -- "$1" > /dev/null 2>&1; then
"$@"
else
echo >&2 "Gestor do pacote desconhecido"
return 1
fi
}
get_package_manager_install "$archlinux" -S --noconfirm --needed ca-certificates curl git p7zip wget unzip zstd
get_package_manager_install
이들 모두를 별도의 인수로 where 에 전달하고 get_package_manager_install
있는 그대로 전달 합니다 pacman
.
3개의 인수만 취하고 get_package_manager_install
두 번째와 세 번째 인수를 공백 문자로 분할하여 전달할 인수 목록을 생성하려는 경우 분할+glob 연산자를 사용할 수 있습니다( 코드에서 pacman
잊어버렸기 때문에 잘못 사용함 ). $1
, glob 부분을 비활성화하고 $IFS
공백으로 설정한 후:
get_package_manager_install() {
if command -v -- "$1" > /dev/null 2>&1; then
(
set -o noglob
IFS=' '
exec "$1" $2 $2
)
else
echo >&2 "Gestor do pacote desconhecido"
return 1
fi
}
get_package_manager_install "$archlinux" \
'-S --noconfirm --needed'
'ca-certificates curl git p7zip wget unzip zstd'
당신이 왜 그런 짓을 했는지는 상상할 수 없지만.
archlinux
또한 Linux 배포판의 이름인 패키지 관리자의 이름을 포함하는 변수 이름이 왜 지정되었는지 잘 모르겠습니다 .