Linux作業系統之Shell程式設計

2021-09-24 14:35:42 字數 2639 閱讀 2363

shell是種命令解釋程式,也可以看作是一種命令語言的直譯器。 使用者在與shell互動時所輸入的命令列必須符合shell命令的語法和語義規範,才能夠被shell理解並執行。shell所使用的這種命令語言稱為shell 語言。shell語言不僅僅是一種互動式語言, 它還是一種可程式設計的程式語言。將若干個shell命令列寫入個檔案就構成了乙個shell程式,它可以被shell逐條地解釋執行。用shell語言編寫的shell程式可以使用各種變數、引數和控制結構來組織命令流程,自動化地完成各種複雜冗繁的處理工作。

linux系統中廣泛使用了shell程式來實現系統的初啟、配置、管理和維護等工作。因此,熟練掌握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)將指令碼作為可執行檔案執行:

$ chmod a+x hello  

$ ./hello  

用文字編輯器生成的指令碼檔案預設是沒有x許可權的,也就是說是不可直接執行的。賦予x許可權後,指令碼就可以像一般的 shell命令那樣執行了。如果指令碼不在系統存放命令的標準目錄下,需要在執行時指定指令碼的路徑。上例中指令碼hllo放在當前目錄下,所以要用.hello來執行。

(2)啟動一乙個shell子程序來執行指令碼檔案:

$ bash hello  #

或bash 

執行此命令行時,shell 程序先啟動乙個bash子程序,讓它執行hello指令碼的內容,執行完畢後bash子程序也終止。在這種方式中,指令碼是作為命令引數傳給子shell 的。子shell執行時讀取該檔案並執行其內容,因此指令碼檔案不必有執行許可權。這種方法常用於執行乙個其他版本的sbell指令碼。假如當前shell是bash,而chello是用c shell語言寫的指令碼,則要執行這個指令碼時可以用csh chello命令啟動乙個csh程序來執行它。

(3)讓當前shell程序執行指令碼檔案:

$.hello     

「.」是乙個shell內部命令,hello是它的引數。命令的功能是讀取引數指定的檔案,執行其內容。這種執行方式與第2種方式類似,區別在於此方式是由當前shell程序來執行指令碼檔案的。

前面大致簡介了一下什麼是shell指令碼,它有什麼特點,做什麼用的,想必現在大家對這個有了一定程度的了解,當然這只是學習linux作業系統中所接觸到的冰山一角,想要學好linux作業系統,就必須學好shell,那怎麼樣才能學好shell呢?我們先看乙個簡單的shell程式:

$ cat hello       # hello program  

# this is a shell script to say hello

echo hello world!  

echo -n 「todayis」  

date 「+%a,%b %d,%y.」  

$.hello  # run  

hello world!  

todayissunday, july 15, 2018.  

$_  

這個hello程式的第二行是注釋,後面3行是命令,在執行程式時,shell依次執行這3個命令,並輸出顯示資訊。這就是乙個簡單的hello world**,幾乎所有的程式設計師學習如何編寫**都是從這裡起家的。

學習linux運維,這是必經之路,不知道各位讀者是自學呢,還是在校老師教導,不過在我看來,學習技術還是的有乙個完整的體系,前幾天逛網頁,看到乙個關於linux學習的**,叫linuxprobe,配套有書籍叫《linux就該這麼學》,進去瞄了一眼,感覺還不錯,裡面的知識架構很好,如果各位有興趣可以一閱!不管你學不學,資料就在**不斷增多;不管你學不學習,時間就那麼多,逐漸流逝!

祝各位運維人前程似錦!加油!!!

Linux作業系統之Shell程式設計

shell是種命令解釋程式,也可以看作是一種命令語言的直譯器。使用者在與shell互動時所輸入的命令列必須符合shell命令的語法和語義規範,才能夠被shell理解並執行。shell所使用的這種命令語言稱為shell 語言。shell語言不僅僅是一種互動式語言,它還是一種可程式設計的程式語言。將若干...

Linux 作業系統之執行緒

程序部落格 執行緒 在乙個程式裡的乙個執行路線就叫做執行緒 thread 更準確的定義是 執行緒是乙個程序內部的控制序列。一切程序至少都有乙個執行執行緒。程序與執行緒 1.程序是資源競爭的基本單位。2.執行緒是程式執行的最小單位。3.執行緒共享程序資料,但也擁有自己的一部分資料。4.linux下的執...

Linux作業系統之RPM YUM

yumrpm qa檢視所有rpm包 rpm qa grep 檢視以安裝的 軟體rpm列表 rpm qi 軟體包名查詢軟體包資訊 rpm ql 軟體包名查詢軟體包中的檔案 rpm qf 檔案的全路徑名查詢檔案所屬的軟體包 rpm e rpm包的名稱 注意 如果其它軟體包依賴於將要解除安裝的軟體包,解除...