Você usa sua variável de matriz ( $REQPKGS
) dentro de seu loop em vez da variável de loop ( $pkg
), então está fazendo exatamente o que você pediu, instale os dois pacotes ao mesmo tempo duas vezes.
Altere o interior do seu loop for
para:
REQPKGS=(redhat-lsb-core telnet)
for pkg in "${REQPKGS[@]}"; do
if yum -q list installed "$pkg" > /dev/null 2>&1; then
echo -e "$pkg is already installed"
else
yum install "$pkg" -y && echo "Successfully installed $pkg"
fi
done
Ao usar um loop for
, a variável definida após for
contém o valor de cada iteração do loop; no seu caso, a variável que contém um único pacote de cada vez é $pkg
.
Alternativamente
REQPKGS=(redhat-lsb-core telnet)
yum install -y "${REQPKGS[@]}"
Instalará os pacotes especificados que não estiverem instalados e ignorará os pacotes já instalados.