您的位置:首页 > 运维架构 > Shell

Shell命令之用脚本判断源码包是否安装

2017-07-28 09:44 996 查看
因为Linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类:

1、rpm包安装的

可以用
rpm -qa
看到,如果要查找某软件包是否安装,用
rpm -qa | grep “软件或者包的名字”


[root@xia ~] rpm -qa | grep ruby


2、以deb包安装的

可以用
dpkg -l
能看到。如果是查找指定软件包,用
dpkg -l | grep “软件或者包的名字”


[root@xia~]dpkg-l|grepruby


3、yum方法安装的

可以用
yum list installed
查找,如果是查找指定包,命令后加
| grep “软件名或者包名”


[root@xia ~] yum list installed | grep ruby


4、以源码包自己编译安装的

例如
.tar.gz
或者
tar.bz2
形式的,这个只能看可执行文件是否存在了,

上面两种方法都看不到这种源码形式安装的包。如果是以root用户安装的,可执行程序通常都在
/sbin:/usr/bin
目录下。

说明:其中
rpm yum
是Redhat系linux的软件包管理命令,
dpkg
是debian系列的软件包管理命令

shell脚本怎么判断源码包是否安装

#!/bin/bash
read -p "input your rpm_packet'name:" i
x=`rpm -qa | grep $i`
if [ `rpm -qa | grep $i |wc -l` -ne 0 ];then
echo -e "yes,the packet_list: \n$x"
else
echo "no"
fi


1、获取shell函数调用的返回值:

#!/bin/sh

info()
{
cat jlb.sh
}

res=`info`
echo "state: "$?
echo "res: "${res}


说明:

res=`info`


这一行为调用函数info,里面的符号`不是单引号,而是Esc按键下面的那个,另外$?返回的为上一条命令的执行状态,不是返回值;

2、获取shell命令的返回值,原理同上,例如:

#!/bin/sh

info=`cat jlb.sh`

echo "info: "${info}


说明:同1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: