Linux 腳本編寫

第一個shell腳本編寫shell

 

#!/bin/bashapache

# 上面中的 #! 是一種約定標記, 它能夠告訴系統這個腳本須要什麼樣的解釋器來執行;bootstrap

 

#定義變量:tomcat

APP_BASE_PATH="/opt/app"bash

 

#特殊變量:app

$1 傳遞給腳本或者函數的第1個參數   $2 依次類推函數

NODE_NAME="$1"spa

OP="$2"ci

WARNAME="$3"get

WARFILE="$4"

 

#使用變量

只須要在一個定義過的變量前面加上美圓符號 $ 就能夠了, 另外,對於變量的{} 是能夠選擇的, 它的目的爲幫助解釋器識別變量的邊界.

SERVER_NAME="apache-tomcat-$NODE_NAME"

SERVER_DIR="$APP_BASE_PATH/$SERVER_NAME"

 

#將命令輸出的值賦值給一個變量

directory=`pwd`       #用反引號將命令引發來
echo $directory

tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`

if語句

if[表達式] then 語句 fi

if[表達式] then 語句 else 語句 fi

條件判斷
if [ -z STRING ]  「STRING」 的長度爲零則爲真。  

     if [ -z ${WARNAME} ]; then
          echo "please specify war name!"
          echo "Usage: ./tom.sh NODE_NAME -w WARNAME /path/to/file.war"
          exit 0
    fi

 

  

    if [ ! -s ${WARFILE} ]   若是文件存在且大小不爲0
    then  
        echo "file not exist: [${WARFILE}]"
        exit 0
    fi


shell函數

shell函數必須先定義再使用

start() {
echo -n $"Starting $SERVER_NAME: "
tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`
if [ ${tId:=0} -ne 0 ]
then
echo "failure: it's already startup,please stop first.[Failed]"
else
${SERVER_DIR}/bin/startup.sh
sleep 2
tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`
if [ ${tId:=0 } -eq 0 ]
then
echo "failure: See details on ${SERVER_DIR}/logs/catalina.out. [Failed]"
else
echo "success [OK]"
fi
fi
}

注意:1. 調用函數只須要給出函數名,不須要加括號。

basename 命令用於建立基本文件名稱
 targetWar=`basename ${WARFILE}`

     if [ "${targetWar%%.war*}" != "${WARNAME}" ]; then
         echo "ERROR: Target file name must equles '${WARNAME}.war.*'"
         echo " Please change file name and retry."
         exit 0
        else
        echo "war file path: ${WARFILE}"
    fi

${targetWar%%.war*}  把targetWar變量的值刪掉匹配.war*的後綴的值
相關文章
相關標籤/搜索