Linux下的shell程式設計入門教程

2021-07-29 06:58:42 字數 2246 閱讀 7423

通常情況下,我們從命令列輸入命令每輸入一次就能夠得到系統的一次響應。一旦需要我們乙個接著乙個的輸入命令而最後才得到結果的時候,這樣的做法顯然就沒有效率。要達到這樣的目的,通常我們利用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...