我正在尝试使用if语句快速检查是否在bash脚本中安装了rpm.但我想默默地做.目前,当我运行脚本并且rpm确实存在时,它将rpm的输出输出到我不想要的屏幕.
if rpm -qa | grep glib; then
do something
fi
Run Code Online (Sandbox Code Playgroud)
也许有一个我失踪的rpm选项?或者如果我只是需要改变我的陈述?
谢谢
zta*_*013 12
--quiet这个rpm命令有一个有趣的选项.手册页说:
--quiet
Print as little as possible - normally only error messages will
be displayed.
Run Code Online (Sandbox Code Playgroud)
所以你可能想用这个:
if rpm -q --quiet glib ; then
do something
fi
Run Code Online (Sandbox Code Playgroud)
这种方式应该更快,因为它不必等待-qa(查询所有)rpm包安装但只是查询目标rpm包.当然,如果安装或不安装,您必须知道要测试的软件包的正确名称.
注意:在fedora 15上使用RPM版本4.9.1.2
1)您可以将-q开关添加到grep
if rpm -qa | grep -q glib; then
do something
fi
Run Code Online (Sandbox Code Playgroud)
2)您可以将stout和/或stderr输出重定向到/ dev/null
if rpm -qa | grep glib 2>&1 > /dev/null; then
do something
fi
Run Code Online (Sandbox Code Playgroud)
实际上你只需要-q选项:
$ rpm -q zabbix-agent
package zabbix-agent is not installed
$ rpm -q curl
curl-7.24.0-5.25.amzn1.x86_64
Run Code Online (Sandbox Code Playgroud)
它看起来像:
$ if rpm -q zabbix-agent > /dev/null; then echo "Package zabbix-agent is already installed."; fi
Package zabbix-agent is already installed.
Run Code Online (Sandbox Code Playgroud)