一、Shell腳本高級編程實戰第一部


        Shell腳本語言是實現linux系統自動化管理的重要且必要的工具,幾乎每一個合格的linux系統管理員或者高級運維工程師都要熟練shell腳本語言的編寫,只有這樣才能提升工作效率,解決工作中的重復勞動。(shell就是運維中的米飯,饅頭,其他高級語言都是錦上添花,運維首先要掌握shell,再去研究其他)

一、什么是shell 和shell腳本

       shell是一個命令解釋器,在操作系統的最外層,負責直接與用戶對話,把用戶的輸入解釋給操作系統,並處理各種各樣的操作系統的輸出結果,輸出到屏幕反饋給用戶。這種對話方式是交互式的方式(鍵盤輸入並立即得到結果),或者非交互(腳本)的方式。

      shell的英文就是貝殼,他在操作系統中的位置如圖:這里要注意,系統核心包括內核和各種庫。shell在其中就是一個跑腿的角色。

       

 

        當linux命令或者語句不在命令行下執行,而是通過一個程序文件執行時,就是一個shell腳本或者shell程序。shell程序就像是DOS下的批處理(*.bat)。說白了就是命令、變量和流程控制的語句。

二、shell的編寫一定要規范嚴謹,只有這樣才能形成好的編寫習慣,事半功倍,並且有好的注釋,才能方便自己以后看或者方便他人進行查看。另外在腳本的開頭加上版權,時間、作者、email、作用、版本。

       所謂的規范:統一,就是大家都這樣干

三、shell腳本在運維工作中的地位和作用

        shell腳本擅長處理純文本類型的數據。而linux系統絕大多數服務都是純文本的。如apache、nginx、mysq、crond、nfs等軟件,你啟動、配置等都是用shell語言寫的,自然執行的shell腳本進行,因此地位超然就不言而喻了。

四、腳本語言的種類

      1.  bash\csh\tcsh,當前此contos系統支持的shell  如下,它是一個弱語言,最常用的就是bash,系統默認的也是bash,一個用戶的執行命令也是根據passwd中指定的shell語言進行解釋的

       

      

 

        2.php是網頁程序,也是腳本語言,更專注於web網頁開發,但也可以處理系統日志、配置文件等。

        3.perl腳本語言,比shell強大,語法靈活不易讀,團隊協作困難

        4.python是腳本語言、web開發,中等以上的公司對python都有要求。

五、shell與php/perl/python語言的區別和優勢?

       shell優勢是處理操作系統底層業務,因為有大量的系統命令支持,比如grep,awk,sed等,一鍵安裝、優化,監控報警腳本等,常規的應用,shell開發更簡單快速,符合運維大原則。(簡單、易用、高效)

       其他語言在於web運維工具的開發,web管理工具,web業務開發有優勢,對於常規業務,完全可以用shell,用其他語言也可以實現,但你終究還是要調用系統函數,不如直接用shell實現。

        總之,對於一個腳本、一個功能,可以用shell處理,可以用其他語言,那么不能說絕對,但是大多數情況下是shell占優勢,但是,大環境下,企業都喜歡可視化,web工具的優勢,喜歡一鍵就ok了,這也是python流行的原因所在,但還是要調用shell下的系統函數!

六、shell腳本的第一行

  #!/bin/sh  

  1)如果第一行沒有上邊的內容,那么系統會調用默認的shell進行解釋腳本 ;當然也可以在執行腳本的時候進行指定,例如:bash  xx.txt,這樣也是bash解釋器進行解釋      

 2)上面的內容可以用#!/bin/bash進行替換,sh只是bash的一個軟連接

    [root@djw1 ~]# ls -l /bin/sh 
    lrwxrwxrwx 1 root root 4 Jun 10 10:12 /bin/sh -> bash

七、shell版本,不同種類shell也是有版本,如下bash

 

 八、shell腳本的執行

       當shell腳本以非交互的方式運行時,它會先查找環境變量ENV,該變量指定了一個環境文件(.bashrc,.bash_profile,/etc/bashrc,/etc/profile等),然后從該環境變量文件開始執行,當讀取了ENV文件后,shell才開始執行腳本中的內容

     例子:source  xx.sh   /    . (點) xx.sh 這樣在xx.sh中如果有定義的變量,那么在外面的shell就可以調用此變量。

 

 

 

 

 

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM