思路: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