天天看點

Shell腳本編寫規範化、标準化

 1、腳本中多寫注釋

            這是不僅可應用于 shell 腳本程式中,也可用在其他所有類型的程式設計中的一種推薦做法。

            在腳本中作注釋能幫你或别人翻閱你的腳本  時了解腳本的不同部分所做的工作。

             注釋用 # 号來定義。

2、 當運作失敗時使腳本退出

      有時即使某些指令運作失敗,bash 可能繼續去執行腳本,這樣就影響到腳本的其餘部分(會最終導緻邏輯錯誤)。

       用下面的行的方式在遇到指令失敗時來退出腳本執行:

3、當 Bash 用未聲明變量時使腳本退出

    Bash 也可能會使用能導緻起邏輯錯誤的未聲明的變量。是以用下面行的方式去通知 bash 

      當它嘗試去用一個未聲明變量時就退出腳本執行:

4 、使用雙引号來引用變量

      當引用時(使用一個變量的值)用雙引号有助于防止由于空格導緻單詞分割開和由于識别和擴充了通配符而導緻的不必要比對。

       看看下面的例子:

<code>    </code><code>#!/bin/bash     </code>

<code>    </code><code># 若指令失敗讓腳本退出 </code>

<code>    </code><code>set</code> <code>-o errexit  </code>

<code>    </code><code># 若未設定的變量被使用讓腳本退出 </code>

<code>    </code><code>set</code> <code>-o nounset </code>

<code>    </code><code>echo</code> <code>"Names without double quotes"</code>  

<code>    </code><code>echo</code> <code>names=</code><code>"Tecmint FOSSMint Linusay"</code> 

<code>    </code><code>for</code> <code>name </code><code>in</code> <code>$names; </code>

<code>    </code><code>do</code>   

<code>        </code><code>echo</code> <code>"$name"</code> 

<code>    </code><code>done</code> 

<code>    </code> 

<code>    </code><code>echo</code> <code>echo</code> <code>"Names with double quotes"</code>  

<code>    </code><code>echo</code> 

<code>    </code><code>for</code> <code>name </code><code>in</code> <code>"$names"</code><code>; </code>

<code>    </code><code>done</code> <code>exit</code> <code>0</code>

    儲存檔案并退出,接着如下運作一下:

5、在腳本中使用函數

    除了非常小的腳本(隻有幾行代碼),總是記得用函數來使代碼子產品化且使得腳本更可讀和可重用。

    寫函數的文法如下所示:

<code>  </code><code>function</code> <code>check_root(){   </code>

<code>      </code><code>command1;    </code>

<code>      </code><code>command2; </code>

<code>   </code><code>} </code>

<code>   </code><code># 或 </code>

<code>   </code><code>check_root(){   </code>

<code>       </code><code>command1;    </code>

<code>       </code><code>command2; </code>

<code>   </code><code>}</code>

寫成單行代碼時,每個指令後要用終止符号:

6、 字元串比較時用 = 而不是 ==

               注意: == 是 = 的同義詞,是以僅用個單 = 來做字元串比較,

              例如:

7、用 $(command)  來做代換

       指令代換 是用這個指令的輸出結果取代指令本身。用 $(command) 而不是引号 `command` 來做指令代換。

        這種做法也是 shellcheck tool (可針對 shell 腳本顯示警告和建議)所建議的。例如:

8、 用 readonly 來聲明靜态變量

        靜态變量不會改變;它的值一旦在腳本中定義後不能被修改:

9、環境變量用大寫字母命名,而自定義變量用小寫

          所有的 bash 環境變量用大寫字母去命名,是以用小寫字母來命名你的自定義變量以避免變量名沖突:

# 定義自定義變量用小寫,而環境變量用大寫 

nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl” 

perl “$nikto_file” -h  “$1” 

本文轉自 boy461205160 51CTO部落格,原文連結:http://blog.51cto.com/461205160/1941165