shell腳本的規範

shell腳本的規範

1、腳本的解釋器

shell腳本開頭(第一行)會指出由哪個程序(解釋器)來解釋腳本中的內容。這一行必須在腳本頂端的第一行,如果不是第一行則爲註釋。不管寫什麼腳本最好養成好習慣,都加上解釋器名稱,例如:#!/bin/bash”#!”又稱爲幻數

shbash的區別爲:shbash的軟鏈接,這裏推薦用標準寫法#!/bin/bash

 

下面是Linux中常用腳本語言開頭的編碼寫法,不同語言腳本的開頭一般都要加上如下相應語言的開頭標識內容。

#!/bin/sh
#!/bin/bash
#!/usr/bin/awk
#!/bin/sed
#!/usr/bin/tcl
#!/usr/bin/expect
#!/usr/bin/perl
#!/usr/bin/env python

注意:如果腳本的開頭不指定解釋器,那麼腳本就會使用系統默認的解釋器執行,這樣在某些情況下就會出現錯誤,所以一定要養成良好的習慣,在腳本的第一行指定解釋器。

2、腳本註釋

shell腳本中跟在”#”號後面的內容爲註釋,用來對腳本進行說明,註釋部分不會被執行,僅僅是方便人們查看和理解腳本。必須要養成寫註釋的良好習慣,可以方便團隊協作。同時也方便自己以後查看更加方便。

3shell腳本的執行

shell腳本以非交互式運行時,它會先查找環境變量ENV,該變量指定了一個環境文件(通常是.bashrc),然後從該環境變量文件開始執行,當讀取了ENV文件後,shell纔開始執行shell腳本中的內容。

 

shell腳本執行的三種方式,例如執行/root/install_httpd.sh

abash腳本文件名(不需要執行權限即可執行)

例如:bash /root/install_httpd.sh

 

b、絕對路徑/腳本文件名(需要執行權限)

例如:chmod +x /root/install_httpd.sh && /root/install_httpd.sh

csource腳本文件名(需要執行權限)

例如:chmod +x /root/install_httpd.sh && source /root/install_httpd.sh

 

注意:在腳本文件中如果想調用另外的腳本文件,不能使用shbash,只能使用點或者source來進行調用。

4shell腳本開發基本規範

4.1、開頭指定腳本解釋器

#!/bin/sh #!/bin/bash

4.2、開頭注意加時間、作者、聯繫郵箱、腳本作用等信息

可配置vim編輯文件時自動加上以上信息,方法是修改~/.vimrc配置文件

4.3、腳本中儘量不要使用中文註釋

儘量使用英文註釋,防止切換系統環境後出現中文亂碼問題

4.4shell腳本使用.sh結尾

例:script-name.sh,這樣方便自己或他人識別這是shell腳本文件

5、代碼書寫習慣

5.1、成對的符號儘量一次性寫出來,防止遺漏

有很多人在編寫shell腳本時,由於各種原因多寫或漏寫了符號,導致最終運行腳本時出錯,從而浪費不必要的時間進行排錯。例如:大括號{},中括號[],小括號(),單引號’’,雙引號””,反引號``,等成對出現的符號儘量一次性寫出來,然後在其中寫入合適的代碼即可,這樣就避免了符號的遺漏導致的報錯問題。

 

3.2、括號的保留空格習慣

中括號[ ]兩端需要留有空格,不然會報錯。書寫時即可留出空格然後書寫內容。如果不知道大括號{},中括號[],小括號(),到底哪種括號需要兩端留空格,可以在書寫這些括號的時候兩端都保留空格來進行書寫,這樣可以有效避免因空格導致的各種錯誤。

 

3.3、流程控制語句一次性書寫完再添加內容

1if語句格式一次書寫完成

if 條件內容
then
  條件成立後執行的代碼
fi

 

2for循環格式一次書寫完成

for條件內容
   do
     條件成立後執行的代碼
   done

提示:whileuntilcase等語句也是一樣

3.4、代碼縮進提高可讀性

例如:下面的代碼輸出1-50之間所有的偶數

#!/bin/bash
for i in $(seq 50);
do
    if (( $i%2 == 0 ));then
        echo $i
    fi
done

6、變量的命名規則

1、變量名必須是以字母或下劃線”_”開頭,後面跟字母、數字或下劃線。

2、變量名中間不能有空格,可以使用下劃線連接。

3、變量名不要使用問號”?”、星號”*”或其他特殊字符。

4、變量名不能使用標點符號,更不能使用bash裏的關鍵字,例如:ifforwhiledo等關鍵字。

5、變量名的命名儘量要有意義,最好能夠讓別人一眼能看出什麼意思。

6、自定義變量儘量不要和系統環境變量衝突。

7、局部變量最好使用local進行定義。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章