Linux上編寫shell的簡單示例,寫第一個“Hello World”程序(以Ubuntu為例)。
幾乎所有的講解編程的書給讀者的第一個例子都是 Hello World 程序,那麼我們今天也就從這個例子出發,來逐步了解 BASH。
用 vi 或vim 編輯器編輯一個hello文件如下:
#!/bin/bash
# This is a very simple example
echo Hello World
這樣最簡單的一個 BASH 程序就編寫完了。這裡有幾個問題需要說明一下:
一,第一行的 #! 是什麼意思#! 是說明 hello 這個文件的類型的,有點類似於 Windows 系統下用不同文件後綴來表示不同文件類型的意思(但不相同)。Linux 系統根據 "#!" 及該字串後面的信息確定該文件的類型,關於這一問題可以通過 "man magic"命令 及 /usr/share/magic 文件來了解這方面的更多內容。
在 BASH 中 第一行的 "#!" 及後面的 "/bin/bash" 就表明該文件是一個 BASH 程序,需要由 /bin 目錄下的 bash 程序來解釋執行。BASH 這個程序一般是存放在 /bin 目錄下,如果你的 Linux 系統比較特別,bash 也有可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或 /usr/local/sbin 這樣的目錄下;如果還找不到,你可以用 "locate bash" "find / -name bash 2> /dev/null" 或 "whereis bash" 這三個命令找出 bash 所在的位置;如果仍然找不到,那你可能需要自己動手安裝一個 BASH 軟件包了。
第二行的 "# This is a ..." 就是 BASH 程序的注釋,在 BASH 程序中從“#”號(注意:後面緊接著是“!”號的除外)開始到行尾的多有部分均被看作是程序的注釋。
第三行的 echo 語句的功能是把 echo 後面的字符串輸出到標准輸出中去。由於 echo 後跟的是 "Hello World" 這個字符串,因此 "Hello World"這個字串就被顯示在控制台終端的屏幕上了。需要注意的是 BASH 中的絕大多數語句結尾處都沒有分號。
如何執行該程序呢?有兩種方法:一種是顯式制定 BASH 去執行:
$ bash hello 或
$ sh hello (這裡 sh 是指向 bash 的一個鏈接,“lrwxrwxrwx 1 root root 4 Aug 20 05:41 /bin/sh -> bash”)
或者可以先將 hello 文件改為可以執行的文件,然後直接運行它,此時由於 hello 文件第一行的 "#! /bin/bash" 的作用,系統會自動用/bin/bash 程序去解釋執行 hello 文件的:
$ chmod u+x hello
$ ./hello
此處沒有直接“$ hello”是因為當前目錄不是當前用戶可執行文件的默認目錄,而將當前目錄“.”設為默認目錄是一個不安全的設置。
需要注意的是,BASH 程序被執行後,實際上 Linux 系統是另外開設了一個進程來運行的。