grep uma variável dentro de uma instrução if

1

Talvez eu esteja me aproximando disso da maneira errada, então estou aberto a sugestões. Eu estou tentando evitar adicionar a saída de INSTALLED_LIST a um arquivo. Desejo usá-lo dentro de uma variável.

Basicamente, quero verificar se uma lista (INSTALLATION_PACKAGES) de pacotes está instalada em um sistema. Caso contrário, registre quais falharam na instalação, registre as informações e saia. Fora da declaração if, isso funciona bem (veja a linha comentada), estou apenas tendo problemas para implementá-lo em uma instrução if.

Thx antecipadamente por sua ajuda.

INSTALLED_LIST='dpkg --list'

for i in $INSTALLTION_PACKAGES; do
  apt-get -y install $i
  # echo "$INSTALLED_LIST" | grep -ie "^ii  $i "
  if ! echo "$INSTALLED_LIST" | grep -ie "^ii  $i "  ; then
    echo $i >> $FAILED_INSTALL
  fi
done
    
por jdh239 09.11.2015 / 19:01

1 resposta

2

Se você quiser que todos os pacotes em $INSTALLATION_PACKAGES sejam instalados, apenas apt-get install todos eles e então verificarão se algum deles falhou:

apt-get -y $INSTALLATION_PACKAGES
list=$(dpkg -l | grep ^ii)
for i in $INSTALLATION_PACKAGES do
    echo "$list" | grep -w "$i" || echo "$i" >> $FAILED_INSTALL
done
    
por 09.11.2015 / 19:15