做爲一個每天與Linux打交道,並以此爲生的Linux運維工程師,最經常使用的工具性語言恐怕就是shell了, 而對於大多數的Linux和一些類Unix而言,其默認的shell就是Bash。使用Bash通常有兩種場景,一是直接使用命令,二是,將這些命令組合起來,加上邏輯判斷、循環、加上異常文本處理工具、加上函數構成shell腳本。用於自動、快速的執行某些批量操做。shell
爲達到某個目的,Bash每每有多種實現方法,好比在腳本中 反引號 ` ` 與$() 是相同的, 這種特性提供方便的同時也爲代碼的複雜度和可讀性帶來必定的影響,Bash沒有所謂的規範,只有所謂不一樣的使用習慣,以下是我平時使用時的一些積累,同時也參考了許多優秀的博客,記錄以下,目的呢就是單純的與你們分享,畢竟互聯網環境下就是互相分享,彼此借鑑,在原有的基礎的創新,最重要的不是人云亦云,而是真正領悟以後的相互點評、思想碰撞。bash
1.添加註釋運維
這個不用過多解釋,不管哪一種語言這甚至都是必須的,目的是加強可讀性,節約他人和之後的本身熟悉腳本的時間。函數
2.構建一種一致的格式工具
我這裏主要指的是縮進 1-- 使用空格(2個或者4個,我通常用4個)取代tab。 2--代碼分層要明確,屬於一級的要對其,這一點Python作的很好,強制要求的。這樣寫出來的shell本身看着心情也不一樣。編碼
3.編碼習慣上的一些注意spa
這裏純屬我的習慣,但以下這樣作的好處是使代碼風格更統一,目的仍是提升可讀性code
1--使用花括號 { } 。 用花括號括起來全部的變量名。好比 ${name} 而不是 $name orm
2--計算表達式中用$() 代替反引號 `` 這樣易於閱讀。blog
4.比較變量的值時建議採用雙引號將變量括起來。以下:
這樣寫的好處至少有: 當變量爲空時依然能夠執行。 當變量中有特殊字符時(接收用戶輸入的狀況下)依然能夠執行。
#!/bin/bash if [ ${name} == "wencheng" ];then echo "hello" fi #####推薦使用以下 #!/bin/bash if [ "${name}" == "wencheng" ];then echo "hello" fi #
5.異常退出時要使用異常退出代碼 如: exit 500 。這樣在此腳本被其餘調用時可以更好的判斷是否執行完成,如若錯誤也能判斷錯誤類型。
6.儘可能避免單行代碼過長的問題。 這樣在不一樣的終端,都可以正常的顯示。
7.避免命令的複雜性,這個是仁者見仁智者見智的問題,有的時候你是發現不了本身代碼的臃腫程度的。好比:
grep cut 等組合使用達到的效果就不如 awk 來的直接。
借用一個例子:
檢索用戶ID爲502的用戶: (第三種會比較的高效)
#一。 cat /etc/passwd | grep 502 |cut -d: -f1 #二。 grep 502 /etc/passwd |awk -F":" '{print $1}' #三。 awk -F ":" '$3 == 502{print $1}' /etc/passwd
先總結這些,歡迎指正。
另外附上控制輸出終端顏色的方法 : https://misc.flogisoft.com/bash/tip_colors_and_formatting