Можно просто сделать
apt-get --assume-yes install unzip
Если он установлен, он ничего не сделает (, если он не устарел, и в этом случае он будет обновлен ).
Если вы хотите, чтобы было тихо, добавьте к этому --quiet
или перенаправьте на/dev/null
:
apt-get -qq --assume-yes install unzip
(-qq
является «очень тихим», но см. руководство apt-get
об этом флаге)
Если вы действительно хотите сначала узнать о существовании пакета, вы можете сделать
if ! dpkg-query -W unzip >/dev/null 2>&1; then
apt-get --assume-yes install unzip
fi
dpkg-query
завершает работу с не -нулевым статусом выхода, если не может найти пакет. Мы перенаправляем и стандартный вывод, и стандартную ошибку на /dev/null
, так как все, что там написано, неинтересно.
Причина, по которой вы получаете сообщение об ошибке на терминале, заключается в том, что dpkg-query
записывает его в стандартный поток ошибок, в то время как ваш сценарий захватывает только стандартный поток вывода.