Você poderia simplesmente fazer
apt-get --assume-yes install unzip
Se estiver instalado, não fará nada (a menos que esteja desatualizado e, nesse caso, será atualizado).
Se você quiser quieto, adicione --quiet
a isso ou redirecione para /dev/null
:
apt-get -qq --assume-yes install unzip
( -qq
é "extra quiet", mas veja o manual apt-get
sobre esse sinalizador)
Se você realmente deseja consultar a existência do pacote primeiro, você pode fazer
if ! dpkg-query -W unzip >/dev/null 2>&1; then
apt-get --assume-yes install unzip
fi
dpkg-query
sai com um status de saída diferente de zero se não encontrar o pacote. Nós redirecionamos a saída padrão e o erro padrão para /dev/null
, já que o que está escrito lá não é interessante.
O motivo pelo qual você recebe a mensagem de erro no terminal é que dpkg-query
o grava no fluxo de erros padrão enquanto seu script captura apenas o fluxo de saída padrão.