Проверьте, существует ли rpm в bash-скрипте без вывода сообщений - PullRequest
7 голосов
/ 10 ноября 2011

Я пытаюсь сделать быструю проверку, чтобы увидеть, установлен ли rpm в скрипте bash с помощью оператора if.Но я хочу сделать это молча.В настоящее время, когда я запускаю скрипт, и rpm существует, он выводит вывод rpm на экран, который мне не нужен.

if rpm -qa | grep glib; then
    do something
fi

Может быть, есть опция rpm, которую мне не хватает?или если мне просто нужно изменить свое заявление?

Спасибо

Ответы [ 5 ]

11 голосов
/ 11 ноября 2011

Для команды rpm доступна интересная опция --quiet.Страница руководства гласит:

   --quiet
          Print  as little as possible - normally only error messages will
          be displayed.

Так что, вероятно, вы можете использовать это:

if rpm -q --quiet glib ; then 
  do something 
fi

Этот путь должен быть быстрее, потому что не нужно ждать -qa (запросить все) пакеты rpm установлены, но просто запрашивает целевой пакет rpm.Конечно, вы должны знать правильное имя пакета, который вы хотите проверить, установлен он или нет.

Примечание: использование RPM версии 4.9.1.2 на fedora 15

7 голосов
/ 23 апреля 2013

На самом деле вам нужна только опция -q:

$ rpm -q zabbix-agent

package zabbix-agent is not installed

$ rpm -q curl

curl-7.24.0-5.25.amzn1.x86_64

Это будет выглядеть так:

$ if rpm -q zabbix-agent > /dev/null; then echo "Package zabbix-agent is already installed."; fi

Package zabbix-agent is already installed.
6 голосов
/ 11 ноября 2011

1) Вы можете добавить ключ -q к grep

if rpm -qa | grep -q glib; then
  do something
fi

2) Вы можете перенаправить вывод stout и / или stderr в / dev / null

if rpm -qa | grep glib  2>&1 > /dev/null; then
  do something
fi
1 голос
/ 10 ноября 2011

Вы можете проверить, возвращает ли команда строку, подстановка команды захватит вывод:

[[ "$(rpm -qa | grep glib)" ]] && do something
1 голос
/ 10 ноября 2011

Вы можете сделать:

[ -z "$(rpm -qa|grep glib)" ] && echo none || echo present

... или, если хотите:

if [ $(rpm -qa|grep -c glib) -gt 0 ]; then
    echo present
else
    echo none
fi
...