Linux 腳本編寫


第一個shell腳本編寫

 

#!/bin/bash

# 上面中的 #! 是一種約定標記, 它可以告訴系統這個腳本需要什么樣的解釋器來執行;

 

#定義變量:

APP_BASE_PATH="/opt/app"

 

#特殊變量:

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

NODE_NAME="$1"

OP="$2"

WARNAME="$3"

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*的后綴的值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM