文章目錄
shell腳本目前我沒有找到統一的規範,只能根據自己日常的習慣和讀別人shell腳本的時候,踩過的坑,在這裏總結一些。
1. 解釋器
shell腳本一般選擇bash爲解釋器,腳本開頭應爲
#!/bin/bash
或者
#!/bin/sh
2. 添加腳本版本和功能註釋
在腳本開頭加註釋,說明腳本作者、編寫時間、腳本功能,最好可以加上腳本的版本號,shell腳本註釋使用#
,註釋語句和#號中間有一個空格
#!/bin/bash
# 腳本版本
# 腳本作者
# 腳本時間
# 腳本功能
3. 添加腳本調試
通過set命令添加腳本調試,如果報錯,腳本直接退出,不繼續執行,對於管道錯誤也直接退出
#!/bin/bash
# 腳本版本
# 腳本作者
# 腳本時間
# 腳本功能
set -e
set -o pipfail
4. 變量命名
變量名稱要統一規範,shell變量建議使用全部大寫,意思清晰明瞭,如果多個字符,可以採用下劃線進行切割。比如SYSTEM_LOG_FILE
,對於變量引用可以才用直接$,如果有下劃線分區的變量,建議使用${SYSTEM_LOG_FILE}
4.1 全局變量和局部變量
全局變量可以採用前面時候的方式進行定義,如果是函數中的局部變量,建議使用local進行變量聲明,這個防止全局變量和局部變量混淆,局部變量可以採用小寫,區分全局和局部變量。
function TestFunc(){
local name="haozi"
echo $name
}
如果存在變量合併的情況,比如目錄和文件名合併,這樣可以重新賦值個一個新的變量,這樣方便之後調用
5. 命名規範
5.1 函數命名
函數命名一般單詞的首字母大寫,比如GetInformation,意思清晰。
- 或者最大或最小值函數後綴使用Max、Min
- 獲取信息或者返回值的函數可以使用Get作爲前綴
- 判斷函數可以使用Is使用前綴
5.2 腳本命名
腳本命名,根據腳本功能進行命名,後綴爲.sh,如果在腳本運行過程中產生一些臨時文件,建議採用PID爲後綴,如果腳本運行完成,這個文件沒有用途,則自動進行刪除
PID=$$
TMP_FILE="ip_list".${PID}
6. 函數
- 函數定義,建議添加function關鍵字
- 函數中縮進可以使用4個空格
- 函數中,使用判斷或者循環語句,使用統一風格,不要有的換行,有個使用;
- 多管道語句,建議可以進行拆分,增加可讀性,可以將通用部分提取
- 使用&&或者||,可以簡化判斷語句,語意更加清晰
7. 引用模塊或者文件
引用腳本或者模塊文件時候,添加註釋,簡要說明模塊的主要功能和作用,使用.或者source
8. 腳本日誌
腳本中建議添加日誌函數,這樣方便腳本調試,腳本運行中各函數的輸出和狀態,日誌文件中包括時間-日誌級別-函數,日誌創建log目錄,然後有常規log和錯誤log
9. 配置文件
配置文件,在工程目錄下創建conf目錄,配置文件以爲.conf爲後綴,配置字段要風格統一,每個配置提供相關配置註釋
10. 其他
- 腳本中路徑變量,建議使用絕對路徑,最後面不要使用/結尾,比如: LOG_DIR="/var/log"。
- 如果裏面有重要文件拷貝,建議使用md5進行一致性檢查,尤其是遠程拷貝。