從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理等領域,shell程式設計仍然起著不可忽視的作用。深入地了解和熟練地掌握shell程式設計,是每乙個linux使用者的必修 功課之一。
linux的shell種類眾多,常見的有:bourne shell(/usr/bin/sh或/bin/sh)、bourne again shell(/bin/bash)、c shell(/usr/bin/csh)、k shell(/usr/bin/ksh)、shell for root(/sbin/sh),等等。不同的shell語言的語法有所不同,所以不能交換使用。每種shell都有其特色之處,基本上,掌握其中任何一種 就足夠了。在本文中,我們關注的重點是bash,也就是bourne again shell,由於易用和免費,bash在日常工作中被廣泛使用;同時,bash也是大多數linux系統預設的shell。在一般情況下,人們並不區分bourne shell和bourne again shell,所以,在下面的文字中,我們可以看到#!/bin/sh,它同樣也可以改為#!/bin/bash。
#!/bin/sh
#comments
your commands go here
首行中的符號#!告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的shell程 序。如果首行沒有這句話,在執行指令碼檔案的時候,將會出現錯誤。後續的部分就是主程式,shell指令碼像高階語言一樣,也有變數賦值,也有控制語句。除第 一行外,以#開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上",這個符號表明下一行與此行會合併為同一行。
編輯完畢,將指令碼存檔為filename.sh,檔名字尾sh表明這是乙個bash指令碼檔案。執行指令碼的時候,要先將指令碼檔案的屬性改為可執行的:
chmod +x filename.sh
執行指令碼的方法是:
./filename.sh
下面我們從經典的「hello world」入手,看一看最簡單的shell指令碼的模樣。
#!/bin/sh
#print hello world in the console window
a = "hello world"
echo $a
shell script是一種弱型別語言,使用變數的時候無需首先宣告其型別。新的變數會在本地資料區分配記憶體進行儲存,這個變數歸當前的shell所有,任何子進 程都不能訪問本地變數。這些變數與環境變數不同,環境變數被儲存在另一記憶體區,叫做使用者環境區,這塊記憶體中的變數可以被子程序訪問。變數賦值的方式是:
variable_name = variable_value
如果對乙個已經有值的變數賦值,新值將取代舊值。取值的時候要在變數名前加$,$variable_name可以在引號中使用,這一點和其他高階語言是明顯不同的。如果出現混淆的情況,可以使用花括號來區分,例如:
echo "hi, $as"
就不會輸出「hi, hello worlds」,而是輸出「hi,」。這是因為shell把$as當成乙個變數,而$as未被賦值,其值為空。正確的方法是:
echo "hi, $s"
單引號中的變數不會進行變數替換操作。
關於變數,還需要知道幾個與其相關的linux命令。
env用於顯示使用者環境區中的變數及其取值;set用於顯示本地資料區和使用者環境區中的變數及其取值;unset用於刪除指定變數當前的取值,該值將被指定為null;export命令用於將本地資料區中的變數轉移到使用者環境區。
下面我們來看乙個更複雜的例子,結合這個例子,我們來講述shell script的語法。
linux Shell程式設計入門
本文結合大量例項闡述如何編寫乙個shell指令碼。為什麼要進行shell程式設計 在linux系統中,雖然有各種各樣的圖形化介面工具,但是sell仍然是乙個非常靈活的工具。shell不僅僅是命令的收集,而且是一門非常棒的程式語言。您可以通過使用shell使大量的任務自動化,shell特別擅長系統管理...
linux shell 程式設計入門
1.1.1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。要使指令碼可執行 chmod x filename 這樣才能用.f...
Linux Shell程式設計入門
shell指令碼,是一種為shell編寫的指令碼程式,一般檔案字尾為.sh chmod file path bin sh 或者 usr bin env bash 向系統表示,其後路徑指定的程式是解釋該指令碼檔案的shell直譯器 指令碼檔案的第一行必須指明執行該指令碼的程式 單行注釋 多行注釋 注意...