Linux操作系統之Shell程序設計

Shell是種命令解釋程序,也可以看作是一種命令語言的解釋器。 用戶在與Shell交互時所輸入的命令行必須符合Shell命令的語法和語義規範,才能夠被Shell理解並執行。Shell所使用的這種命令語言稱爲Shell 語言。Shell語言不僅僅是一種交互式語言, 它還是一種可編程的程序設計語言。將若干個Shell命令行寫入個文件就構成了一個Shell程序,它可以被Shell逐條地解釋執行。用Shell語言編寫的Shell程序可以使用各種變量、參數和控制結構來組織命令流程,自動化地完成各種複雜冗繁的處理工作。
Linux系統中廣泛使用了Shell程序來實現系統的初啓、配置、管理和維護等工作。因此,熟練掌握Shell語言可以更加深入地理解系統的運行機制,更加有效地使用和管理系統。
Linux操作系統之Shell程序設計
Shell 語言的特點:
與其他編程語言相比,Shell 語言具有如下特點:
(1) Shell是一種解釋性語言。這就是說,用Shell語言寫的程序不需編譯,可以直接由Shell進程解釋執行。解釋性語言的特點是快捷方便,可以即編即用,但與編譯性語言的目標程序來比,解釋性語言程序的運行速度要低一些。
(2) Shell 是基於字符串的語言。Shell 只是做字符串處理,不支持複雜的數據結構和運算。Shell 的輸出也全部是字符方式的。
(3) Shell是命令級語言。Shell 程序全部由命令而不是語句組成,幾乎所有的Shell命令和可執行程序都可用來編寫Shell程序。Shell命令十分豐富,命令的組合功能也十分強大。所以,用簡單的命令和命令組合形成的Shell程序即簡潔又高效,可以實現各種複雜的功能。另外需要說明的是,不同版本的Shell程序不完全兼容,差別可能是細微的,也可能是明顯的。
Shell程序也稱Shell腳本(script),是由一系列 Shell命令爲基本元素構成的文本文件。簡單的Shell程序可以只是一個命令序列,高級Shell程序中還可以包含複雜的命令組合,定義各種參數和變量、使用條件命令、控制結構以及其他高級特性。
Shell程序的建立與執行
Shell腳本文是文本文件,因此可以用任何文本編輯器(如vi, emacs等)建立和編輯腳本。Shell腳本文件的名稱沒有限定的拓展名,通常不帶拓展名或者帶“.sh”拓展名。
Shell腳本的執行方式主要有3種。
(1)將腳本作爲可執行文件執行:

  1. $ chmod a+x hello
  2. $ ./hello
    用文本編輯器生成的腳本文件默認是沒有x權限的,也就是說是不可直接執行的。賦予x權限後,腳本就可以像一般的 Shell命令那樣執行了。如果腳本不在系統存放命令的標準目錄下,需要在執行時指定腳本的路徑。上例中腳本hllo放在當前目錄下,所以要用.hello來運行。
    (2)啓動一一個Shell子進程來執行腳本文件:
  3. $ bash hello #或bash < hello
    執行此命令行時,Shell 進程先啓動一個bash子進程,讓它執行hello腳本的內容,執行完畢後bash子進程也終止。在這種方式中,腳本是作爲命令參數傳給子Shell 的。子Shell運行時讀取該文件並執行其內容,因此腳本文件不必有執行權限。這種方法常用於運行一個其他版本的Sbell腳本。假如當前Shell是bash,而chello是用C Shell語言寫的腳本,則要執行這個腳本時可以用csh chello命令啓動一個csh進程來執行它。
    (3)讓當前Shell進程執行腳本文件:
  4. $.hello
    “.”是一個shell內部命令,hello是它的參數。命令的功能是讀取參數指定的文件,執行其內容。這種執行方式與第2種方式類似,區別在於此方式是由當前Shell進程來執行腳本文件的。
    前面大致簡介了一下什麼是Shell腳本,它有什麼特點,做什麼用的,想必現在大家對這個有了一定程度的瞭解,當然這只是學習Linux操作系統中所接觸到的冰山一角,想要學好Linux操作系統,就必須學好Shell,那怎麼樣才能學好Shell呢?我們先看一個簡單的Shell程序:
  5. $ cat hello # hello program
  6. this is a shell script to say hello

  7. echo Hello World!
  8. echo -n “Today is”
  9. date “+%A,%B %d,%Y.”
  10. $.hello # run
  11. Hello World!
  12. Today is Sunday, July 15, 2018.
  13. $_
    這個hello程序的第二行是註釋,後面3行是命令,在執行程序時,shell依次執行這3個命令,並輸出顯示信息。這就是一個簡單的hello world代碼,幾乎所有的程序員學習如何編寫代碼都是從這裏起家的。
    學習linux運維,這是必經之路,不知道各位讀者是自學呢,還是在校老師教導,不過在我看來,學習技術還是的有一個完整的體系,前幾天逛網頁,看到一個關於linux學習的網站,叫linuxprobe,配套有書籍叫《Linux就該這麼學》,進去瞄了一眼,感覺還不錯,裏面的知識架構很好,如果各位有興趣可以一閱!不管你學不學,資料就在哪裏不斷增多;不管你學不學習,時間就那麼多,逐漸流逝!
    祝各位運維人前程似錦!加油!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章