1. 程式人生 > >Linux指令碼(shell)程式設計(一) 簡單入門HelloWorld

Linux指令碼(shell)程式設計(一) 簡單入門HelloWorld

      在電腦科學中,Shell俗稱殼(用來區別於核),是指“提供使用者使用介面”的軟體(命令解析器)。它類似於DOS下command.com。它接收使用者命令,然後呼叫相應的應用程式。同時它又是一種程式設計語言。作為命令語言,它互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設定好的一連串的命令;作為程式設計語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支。shell是一種解釋型程式語言,這些都不重要,重要的是怎麼使用它。它是比較簡單的一種語言,主要用於寫一些指令碼程式碼,一些批處理或安裝程式。

      為了更好地理解,我們開始編寫第一個shell指令碼:“helloworld!”

      在某個目錄下,新建一個檔案,取名“helloworld.sh”

       

      再修改這個程式的執行許可權,具體操作如下:

執行:

執行方式有兩種

一. 到那個資料夾下,輸入如下語句。

 

執行截圖:

二. 到那個資料夾下,輸入如下語句(它的必備條件是1.helloworld的路徑設定正確,即這裡的"#!bin/sh",2.helloworld.sh擁有執行許可權)

 

執行截圖:

問題解析:

1. sh的路徑設定錯誤

檢視helloworld.sh檔案中的第一行是否為“#!bin/sh”

接下來嘗試另一個例子:

 

我們看看每一句的意義:
       第一行,#! 是說明 hello.sh 這個檔案的型別的,有點類似 Windows 系統下用檔案字尾來表示不同檔案型別的意思。Linux 系統根據 "#!" 及該字串後面的資訊確定該檔案的型別。在 BASH 中 第一行的 "#!" 及後面的 "/bin/bash" 就表明該檔案是一個 BASH 程式,需要由 /bin 目錄下的 bash 程式來解釋執行。BASH 這個程式一般是存放在 /bin 目錄下。這一行的寫法是固定的。


       第二行的 "# This is a ..." 就是 BASH 程式的註釋,在 BASH 程式中從“#”號(沒有“!”號)開始到行尾的部分均被看作是程式的註釋,相當於C/C++語言中的“//”。
      第三行是為一個名稱為 str 的變數賦值。
      第四行的 echo 語句的功能是把 echo 後面的字串或變數的內容輸出到標準輸出中去。需要注意的是 BASH 中的絕大多數語句結尾處都沒有分號。

      對於第三行,可能有人會問:在C/C++中,變數都屬於某個型別,在這變數 str 的型別是什麼呢?在 BASH 中變數定義是不需要的,沒有 "int i" 這樣的定義過程。如果想用一個變數,只要他沒有在前面被定義過,就直接可以用,當然你使用該變數的第一條語句應該是對他賦初值了,如果你不賦初值也沒關係,只不過該變數是空( 注意:是 NULL,不是 0 )。

       關於變數的使用,要注意以下幾點:
 一,變數賦值時,“=”左右兩邊都不能有空格;
 二,BASH 中的語句結尾不需要分號(";");
 三,除了在變數賦值和在FOR迴圈語句頭中,BASH 中的變數使用必須在變數前加"$"符號。 在比較詳細的 bash 文件中,會規定使用變數要採用這樣的形式:${STR},如果你的指令碼出了莫名其妙的錯誤,不妨看看是不是這個問題造成的。

       BASH 中的變數既然不需要定義,也就沒有型別一說,那是不是一個變數既可以存放整數,也可以存放字串呢?對!
 一個變數即可以被定義為一個字串,也可以被再定義為整數。如果對該變數進行整數運算,他就被解釋為整數;如果對他進行字串操作,他就被看作為一個字串。