1. 程式人生 > >如何編寫一個優雅的Shell指令碼(二)

如何編寫一個優雅的Shell指令碼(二)

簡介

繼上一篇,本文主要描述一個shell指令碼的基本組成

公共模組

## 自定義寫日誌函式
function writelog() {
  echo "[`date -d '%Y-%m-%d %H:%M:%S'`][$$]: $1" |tess -a $tmplogfile
}


# 指令碼的核心業務程式應該使用該函式去呼叫,控制程式的執行狀態和日誌管理
function EXESH_CMD() {
  writelog "execute [$CMD] begining ...."
  eval $CMD  1>&2 > $tmplogfile
  cat $tmplogfile >> $logfile
  ret=$?
  if [  $ret -ne 0 ]; then
    # 如果返回狀態不為0 ,則程式出現了錯誤,將錯誤日誌直接列印終端,並退出程式
    cat $tmplogfile
    exit 1
  else
    # 狀態碼為0 表示程式執行成功,成功,直接列印
    writelog "finished [$CMD]."
  fi
}

指令碼頭部

#!/bin/sh
#############################################################
## 檔案:xxxx
## 描述:xxxx
## 日期:yyyy-MM-dd
## 作者:xxxxx
############################################################
########################修改記錄#############################
#日期        版本     作者      修改描述
#2018-11-04  V01.000 xxx       描述修改內容。。。
#................
###########################################################
VERSION="V01.000"
tmplogfile="/tmp/result.$$.`date+%S`.log"
logfile=`basename $0`.log

指令碼公共模組

####################公共模組########################
## 載入自定義環境變數
source /path/common.sh
###################################################

指令碼主體

#####################指令碼主體################################
writelog "Program starting....(Version=$VERSION)"
CMD="核心指令碼"
EXESH_CMD
CMD="核心指令碼"
EXESH_CMD
.....
#############################################################

指令碼末尾

writelog "Program Finished"
exit 0