思路:rpm -q 判断软件包是否安装,pgrep判断服务是否启动 #!/bin/bash #检测安装函数 check_install() { rpm -q $1 &>/dev/null if [ $? -eq 0 ];then#判断是否已经安装软件包 echo "$1 software is already installed,checking..." else while : do read -p "$1 not installed,do you want to install it ?(y or n)" n case $n in y) echo "installing..."#安装提示 yum install -y $1 &>/dev/null#不显示输出信息 if [ $? -eq 0 ];then echo "$1 installation successful !" break#安装成功退出循环 else echo "No such $1 software !" exit 1#无软件包退出脚本 fi ;; n) echo "bye!" exit 1#不安装退出脚本 ;; *) echo "please input y or n. "#提示输入y 或者n continue ;; esac done fi } #检测服务启动函数 server_start() { case $1 in y) echo "starting..."#启动提示 service $2 start &> /dev/null#不显示输出信息 if [ $? -eq 0 ];then echo "$2 service started successfully! " break#启动成功退出循环 else echo "$2 service started failed!" break#启动失败退出循环 fi ;; n) echo "bye!" exit 2#不启动退出脚本 ;; *) echo "please input y or n. "#提示输入y 或者n continue ;; esac } if [ $# -ne 1 ];then #判断输入参数是否为1 echo "please input a parameter!" exit fi check_install $1#调用函数 if [ $? -eq 0 ];then#判断安装是否成功 if ! pgrep $1 2> /dev/null;then while : do read -p "$1 server is not started,do you want to start it ? (y or n)" ser server_start $ser $1#调用函数 done else echo "$1 service is already started!" fi fi 以httpd为例,使用:sh server_check.sh httpd