shell編程規範

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進行一致性檢查,尤其是遠程拷貝。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章