BASH SHELL 程式設計簡介(轉)
BASH SHELL 程式設計簡介(轉)[@more@]BASH SHELL 程式設計簡介:1.2版如同在 Linux 中其他的 shell,Bourne Again SHell 不只是一個優秀的指令行式的 shell,同時也提供 scripting 語言。Shell scripting 允許你完全利用 shell 的功能,將需要許多指令執行的多項工作自動化。在你的 Linux 機器上有許多程式是 shell 程式。如果你對學習他們如何運作,或修改他們感興趣,基本要素是你必須瞭解 bash 的語法和語意。除此之外,瞭解 bash 語言,你能夠撰寫你個人專屬的程式,來完成你要做的事情。PROGRAMMING OR SCRIPTING?對於剛開始接觸程式設計的新手,常會對於 programming 和 scripting 語言間的差異感到困惑。Programming 語言通常比 Scripting 語言功能更強大,也更快速。例如:C, C++, 和 Java 都是 Programming 語言。 Programming 語言通常是從原始碼 (一個包含最終程式如何執行的指令集合文字檔) 開始,經過編譯 (建立) 成為一個可執行檔。這個可執行檔不容易移植到不同的作業系統中。舉例來說,如果你曾在 Linux 上寫過 C 的程式,你將不能夠在視窗 98 系統上執行這個 C 的程式。要這樣做,你必須在視窗 98 系統之下,重新編譯原始的程式碼。Scripting 語言也是從原始碼開始,但不需編譯成可執行檔。而是由一個直譯器讀入原始碼檔案裡的那些指令,再執行每個指令。不幸地,直譯的程式通常比編譯的程式慢,因為直譯器必須讀入每個指令。主要的優點是,你能輕鬆地轉換原始碼檔案到任何的作業系統,並且立刻以直譯的方式執行。bash 是一種 scripting 語言。它對撰寫小程式而言是不錯的,但如果你打算開發大型的應用程式, programming 語言可能對你比較有益。其他的 scripting 語言有 Perl, Lisp 和 Tcl 等等。WHAT DO YOU NEED TO KNOW? / 那些是你需要知道的?撰寫你自己的 shell 程式,需要知道最基本的 Linux 指令。舉例來說,你應該知道要如何複製,移動,產生新檔案等等。還有一件事你必須知道,該如何使用文書編輯程式。在 Linux 裡有三個主要的文字檔編輯程式 - vi, emacs 和 pico。如果對 vi 或 emacs 並不熟悉,可用 pico 或一些其他容易使用文字檔編輯程式。WARNING!!! / 警告!!!別以 root 的身份來練習!任何情況都可能發生!若你在撰寫程式時發生意外的錯誤,導致系統當掉,我並不負責。你已被警告過了!一定要使用沒有 root 許可權的一般使用者帳戶。你甚至可以產生一個新的使用者,專門來練習 shell 程式設計。這樣,最糟的情況只是這個使用者的目錄不見了。YOUR FIRST BASH PROGRAM / 第一個 BASH 程式我們的第一個程式會是典型的 "Hello World" 程式。不要懷疑,若你已有程式設計的經驗,你現在又必須頭疼了。然而,這是傳統,我何德何能改變傳統呢?"Hello World" 程式只是將 "Hello World" 這字眼列印到螢幕上。所以趕快開啟你的文字檔編輯程式,鍵入下列的內容:#!/bin/bashecho "Hello World" 第一行是告訴 Linux 用 bash 直譯器來執行這個程式。在這個範例,bash 是位在 /bin 目錄下。如果在你的系統上, bash 是在不同的目錄,請對這行做適當的更改。另外,要特別說明的是,這個直譯器是非常重要,所以請確定目錄正確否,它告訴 Linux 哪一個直譯器用來執行程式中的那些指令。下一步是把將程式存檔。稱它做 hello.sh 好了。完成後,你需要讓此程式可以執行:xconsole$ chmod 700 ./hello.sh 如果你不知道該如何更改檔案的許可權,就參考 chmod 的手冊(manual page)。一旦更改完成後,你僅需輸入程式的名字,就能執行了: xconsole$ ./hello.shHello World 就是這個光!就是這個光!你的第一個程式完成了!真的就是這樣無聊,沒用,然而每個人都是這樣開始的。只需記得這個程式。撰寫程式碼,存成檔案,再用 chmod 讓它可執行。 COMMANDS, COMMANDS, COMMANDS / 指令,指令,指令你的第一個程式要做什麼呢?列印 "Hello World" 這兩個字到螢幕上。但要怎樣做呢?使用指令。在程式中寫的唯一一行程式碼是 echo "Hello World"。好吧,那一個是指令? echo。echo 程式帶有一個引數,並將此引數列印到螢幕。所謂引數是指在你所鍵入的程式名稱之後的任何東西。在這個案例中,"Hello World" 是引數,它傳進 echo 指令中。若你輸入這樣的指令 ls /home/root ,那麼對 ls 而言, /home/root 是引數。就竟這代表什麼呢?代表如果你有一支程式,可將引數列印到螢幕上,你就不需使用 echo 程式。我們假定有支稱為 foo 的程式,能傳入一個引數,一個字串,並且將其列印到螢幕上。我們能同樣地重寫我們的程式: #!/bin/bashfoo "Hello World" 把它存檔及更改存取模式(chmod),然後執行: xconsole$ ./helloHello World 結果完全一樣。究竟有唯一的程式碼嗎?沒有。你真的能寫任何程式?除非你是 echo 程式的作者。你所做的,是將 echo 程式放在你的 shell 程式內,並給一個引數。在現實的世界中,例子中 echo 指令的另一選擇是 printf 指令。printf 提供比較多的控制,如果你熟悉 C 語言的程式設計就會明瞭。事實上,要得到完全相同的結果不必寫一個 shell 程式: xconsole$ echo "Hello World"Hello World bash shell 程式設計提供了多樣的控制方式,而且容易學習。就如你剛看到一樣,你用 Linux 指令來寫你的 shell 程式了。你的 shell 程式是將其他的程式聚集在一起,來執行特定的任務。 A MORE USEFUL PROGRAM / 更有用的程式我們將撰寫一個程式,功能是移動所有的檔案到一個目錄內,然後刪除此目錄及其內容,然後再產生此目錄。這可由下列的指令來完成: xconsole$ mkdir trashxconsole$ mv * trashxconsole$ rm -rf trashxconsole$ mkdir trash不需在交談式的 shell 上敲進所有指令,改用撰寫個 shell 程式: #!/bin/bashmkdir trashmv * trashrm -rf trashmkdir trashecho "Deleted all files!" 把它以 clean.sh 存檔,現在你所要做的是執行 clean.sh,它會移動所有的檔案到一個目錄,刪除他們,再產生目錄,而且列印一個訊息告訴你,它已成功地刪除所有的檔案。所以記得,如果你發現要做的某些事,要一而再,再而做三地做下去,考慮用個 shell 程式來自動執行。 COMMENTS / 註解註解可讓你的程式更容易明瞭,這樣並不影響程式的輸出結果。目的就是來特別幫你明瞭程式。所有在 bash 裡的註解,第一個字元都是用井字元號 (hash symbol):"#",除了第一個行 (#!/bin/bash) 外。 第一行並不是註解。在第一行之後,其餘以 "#" 開始的任何一行都是註解。看下列的程式片段: #!/bin/bash# 這個程式從 1 記錄到 10:for i in 1 2 3 4 5 6 7 8 9 10; doecho $idone即使你不知道 bash 的程式設計,因為註解的關係,也能立刻知道上述的程式在做什麼事。使用註解是很好的習慣。你將發現若未來需要維護你的程式,有註解會比較容易。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944803/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux程式設計-11.Shell Script(bash)--(1)簡介(轉)Linux程式設計
- shell簡介之bash程式設計之引數說明(轉)程式設計
- shell簡介入門bash程式設計之執行(轉)程式設計
- shell程式設計–bash變數介紹程式設計變數
- shell程式設計簡介程式設計
- BASH Shell的指令碼程式設計(轉)指令碼程式設計
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- shell程式設計—簡介(一)程式設計
- shell程式設計–bash變數程式設計變數
- 9.bash shell程式設計程式設計
- Shell程式設計 --- Shell介紹程式設計
- bash 程式設計指南(轉)程式設計
- 高階bash/shell指令碼程式設計指南指令碼程式設計
- Shell 程式設計:Bash空格的那點事程式設計
- Linux程式設計-11.Shell Script(bash)--(2)教學例(轉)Linux程式設計
- shell程式設計Bash中對變數的操作方法談(轉)程式設計變數
- shell程式設計(轉)程式設計
- 簡潔的bash程式設計技巧程式設計
- shell 程式設計簡記程式設計
- Bourne Shell及shell程式設計(轉)程式設計
- .NET泛型程式設計簡介 (轉)泛型程式設計
- Shell程式設計——極簡教程程式設計
- Linux程式設計-11.Shell Script(bash)--(3)用於自動備份的Shell Script(轉)Linux程式設計
- 面向方面程式設計的Annotation簡介(轉)程式設計
- Linux Bash Shell學習(八):shell程式設計基礎——string操作Linux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- Linux Bash Shell學習(七):shell程式設計基礎——執行Shell指令碼、functionLinux程式設計指令碼Function
- shell程式設計幫助(轉)程式設計
- windows程式設計簡介Windows程式設計
- Java桌面應用程式設計:SWT 簡介(轉)Java程式設計
- IO程式設計和NIO程式設計簡介程式設計
- 使XML程式設計更簡單---JDOM介紹及程式設計指南 (轉)XML程式設計
- Bash 指令碼簡介指令碼
- Linux下C語言程式設計簡介(轉)LinuxC語言程式設計
- 結對程式設計簡介程式設計
- Unix下常見shell簡介(轉)
- Linux_day06_01_Shell指令碼程式設計_Bash基礎Linux指令碼程式設計
- Shell簡介