通常情況下,我們從命令列輸入命令每輸入一次就能夠得到系統的一次響應。一旦需要我們乙個接著乙個的輸入命令而最後才得到結果的時候,這樣的做法顯然就沒有效率。要達到這樣的目的,通常我們利用shell程式或者shell指令碼來實現。
一、簡介
shell程式設計有很多類似c語言和其他程式語言的特徵,但是又沒有程式語言那樣複雜。shell程式就是放在乙個檔案中的一系列linux命令和實用程式,在執行的時候,通過linux乙個接著乙個地解釋和執行每個命令。
下面我們來看乙個簡單的shell程式:
1、首先建立乙個內容如下的檔案,名字為date,將其存放在目錄下的bin子目錄中。
#program date
#usageto ::show the date in this way (注釋)
echo 「mr.$user,today is:」
echo date 「+%b%d%a」
echo 「whish you a lucky day !」
2、編輯完該檔案之後它還不能執行,我們需要給它設定可執行許可權。使用如下命令:
chmod +x date
通過以上過程之後,我們就可以像使用ls命令一樣執行這個shell程式.
[beichen@localhost bin]$ date
mr.beichen,today is:
january 13 friday
whish you a lucky day !
為了在任何目錄裡都可以執行這個程式,可以將bin的這個目錄新增到路徑中去。
[beichen@localhost bin]$ path=$path:$home/bin
(注:這裡的$home代替的是/home/beichen,而bin目錄是自己建的乙個目錄)
另外一種執行date的方法就是把它作為乙個引數傳給shell命令:
[beichen@localhost /]$ bash date
mr.beichen,today is:
january 13 friday
whish you a lucky day !
儘管在前面我們使用chmod +x date將date設定為可執行,其實不設定也沒有關係,但在linux裡執行它,需要先告訴系統它是乙個可執行的指令碼。
[beichen@localhost /]$ .date
mr.beichen,today is:
january 13 friday
whish you a lucky day !
即在date前面加上乙個點」.」,並且用空格與後面的shell指令碼的檔名隔開。當然,不推薦這樣做。
二、shell引數
如同ls 命令可以接受目錄等作為它的引數一樣,在shell程式設計時同樣可以使用引數。shell有位置引數和內部引數。
1、 位置引數
由系統提供的引數稱為位置引數。位置引數的值可以用$n得到,n是乙個數字,如果為1,即$1.類似c語言中的陣列,linux會把輸入的命令字串分段並給每段進行標號,標號從0開始。第0號為程式名字,從1開始就表示傳遞給程式的引數。如$0表示程式的名字,$1表示傳遞給程式的第乙個引數,以此類推。
2、 內部引數
上述過程中的$0是乙個內部變數,它是必須的,而$1則可有可無。和$0一樣的內部變數還有以下幾個。
$# ----傳遞給程式的總的引數數目
$? ----上乙個**或者shell程式在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程式的所有引數組成的字串。
下面舉例進行說明:
建立乙個內容為如下的程式p1:
echo 「program name is $0」
echo 「there are totally $# parameters passed to this program」
echo 「the last is $?」
echo 「the parameters are $*」
執行後的結果如下:
[beichen@localhost bin]$ p1 this is a test program //傳遞5個引數
program name is /home/beichen/bin/p1 //給出程式的完整路徑和名字
there are totally 5 parameters passed to this program //引數的總數
the last is 0 //程式執行結果
the parameters are this is a test program //返回有引數組成的字串
Linux下的shell程式設計
前提 shell環境pdksh和bash ubuntu下預設的shell環境是bash 語法篇 一 變數 1.變數分為三種型別 環境變數 內部變數和使用者變數 其中環境變數和內部變數不需要使用者定義,可以直接使用。環境變數 由系統定義,使用者不需要定義但可以改變變數的值。內部變數 由系統提供的一種特...
linux下的shell程式設計
shell程式就是放在檔案的一系列linux命令和應用程式 shell也就是linux下的指令碼語言 1.shell指令碼執行的必須條件 1 bin bash 必須以此作為開頭 3 一般以.sh結尾 2.shell的兩種執行方式 1 可執行的shell指令碼 2 bash shell指令碼 2.關於...
linux下的shell指令碼程式設計
程式語言分為兩種,一種是整個 進行編譯然後進行執行 另一種就是shell這種通過直譯器一行一行轉換為 linux常用的一些命令此處不再贅述 直接進入主題 我們來寫第乙個程式 hello world bin bash 上面的 告訴了直譯器採用bash直譯器來執行 echo hello world ec...