ввод из нескольких каналов

Можно просто сделать

 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записывает его в стандартный поток ошибок, в то время как ваш сценарий захватывает только стандартный поток вывода.

-1
26.11.2019, 13:10
1 ответ

Похоже, вам нужна подстановка команд, а не каналы:

outputOfcommand1=$(command1)
outputOfcommand2=$(command2 "$outputOfcommand1")
command3 "$outputOfcommand1"  "$outputOfcommand2"
2
28.01.2020, 05:08

Теги

Похожие вопросы