您好,登錄后才能下訂單哦!
<--目錄-->
1)腳本模塊名
2)代碼框架
3)函數規范
4)腳本存放規范
5)補充規范19條
6)優秀的開發習慣
【腳本模塊名】
1、常規Shell腳本使用統一后輟:.sh,例:wsyht.sh
2、模塊的啟動和停止腳本統一命名為start_{模塊名}.sh和sop_{模塊名}.sh
3、監控腳本可以*_mon.sh為后輟,控制腳本以*_ctl.sh為后輟
4、模塊(及其腳本和二進制程序)命名應該代表其特性和功能,不要使用個人名字縮寫等形式命名
5、模塊中的腳本和二進制程序命名禁止和其它腳本和二進制程序重名
【代碼框架】
1、腳本開頭解釋器聲明為 #!/bin/bash,也可以為#!/bin/sh,盡量統一
2、配置文件及庫函數腳本等的引用如,source conf/httpd.conf
3、主腳本過程只實現程序主干,功能實現盡量封裝在子函中
4、對于能獨立執行的腳本要有 usage 和 version 函數,可以輸出腳本用法和版本信息
5、規范代碼樹如下:
[root@localhost ~]# tree
|-- bin
| `-- ipsecct
|-- conf
| `-- ipsec.cfg
`-- func
`-- functions
【函數規范】
1、函數定義時在函數名前加上function保留字,雖然/etc/init.d/functions中沒有這樣做
2、盡量一行一條語句,而不是使用":"將多個語句隔開,盡可能多的判斷操作是否成功,并對其進行相應處理
3、對于重要的函數,需說明函數用途,參數,返回值,作者,版本
【腳本存放規范】
1、服務控制腳本統一放置在/service/scripts目錄下;如果多個運維人員,可以放在以自已用戶命名的二級目錄下
如/server/scrips/username;比如我開發的腳本可以放在/server/scripts/wsyht下
【補充規范19條】
1、必須要有基本的日志輸出
2、要關注腳本的效率和系統消耗,綜合、平衡的考慮
3、函數參數傳遞:在調用函數時,向函數傳遞的參數如果是以變量的方式進行傳遞
必須使用雙引號將變量引起,這是為了防止某個變量中以多個空格分隔的字段,導致函數誤認為是多個參數
4、避免cat大文件。比如for id in `cat id_file`;do … ;done。而是采用readline形試讀入文件
5、對上一個命令需要if [ $? ]判斷返回值,對于異常分支,需有相應的處理策略;或打印warning日志,或提示后退出
6、sort超過1G數據文件時,必須用-T指定臨時文件夾,推薦在使用到sort的時候就使用-T指定到自身的TMP目錄
7、避免使用大的while/for循環,如果實在需要,請考慮用awk命令替代
8、對于一系列有嚴格依賴關系的命令,請使用&&來處理
比如:make mydir && mv myfile mydir; 對于有前后次序的腳本,禁止采用后臺運行 & 命令。(推薦)
9、腳本運行前后,注意清除過期數據(上次運行生成的數據),注意rm的風險,可考慮替代方法,如find
10、對于功能較為復雜的腳本,考慮使用一些函數對功能點進行封裝。這樣可以使腳本清晰易讀。(推薦)
11、任何出錯情況必須將出錯信息打印到日志中;嚴重的錯誤必須以郵件或短信報警的形式發出。(必須)
12、對于邏輯比較復雜的腳本,可以使用 set -x 來打印命令執行情況,便于調式和排錯(推薦)。
13、wget之前,注意先刪除本地文件;(推薦)
14、拷貝比較大的文件,最好先將文件cp到一個臨時文件夾,然后mv到目標文件夾,避免下游模塊讀取到不完整文件
15、mv,cp模塊,注意要使用命令全路徑,直接強制替換,如/bin/cp -ap wsyht /tmp
16、腳本中,要注意對單引號'' 雙引號"" 的轉義,不明確轉義啟義的,在自測的時候多加小心。(推薦)
17、例用ps axuw|grep 來獲取信息時,注意ps打印的最大寬度。建議多打幾個w,例如ps auxwww|grep … ;(推薦)
18、使用sort,uniq,join,comm等命令時,要注意兩點:
1) 是否要求排序(例如uniq,join,comm要求輸入文件是排好序的);
2) 如果排序,要求以什么方式排序(例如,comm要求輸入文件是排好序的,而不是數值序);(推薦)
19、對于Java程序腳本要環境變量的,寫腳本前最好通過export重新聲明環境變量,以免在定時任務場合使用出問題
【優秀的開發習慣】
1、盡量少用中文注釋:如果非要用,要根據自身的客戶端對服務器進行字符集調整
如:export LANG="zh_CN.GB18030"在腳本中,調整下了符集
2、盡量以.sh為擴展名
例:script-name.sh
3、書寫代碼習慣:
a.成對內容的一次寫出來。如:
{}、[]、''、``、""
b.流程控制語然一次書寫完,如:
if語句格式一次完成:
c: 書寫[]時,添內容之前直接兩端的空格留出來,例: [ content ]
d.變量的字符串定義加雙引號,等號前后不能有空格。WSYHT_FILE="test.txt"
e.變量的引用加雙引號,大括號,"{WSYHT_FILE}"
f.特別注意,腳本中的單引號
4、調整vim語法配置,及內容自動補便配置
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。