如何編寫一個優雅的Shell指令碼(二)
阿新 • • 發佈:2018-12-19
簡介
繼上一篇,本文主要描述一個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