SHELL語言

SHELL語言

SHELL語言是指UNIX作業系統的命令語言,同時又是該命令語言的解釋程式的簡稱。SHELL作為語言來說,它既是終端上的用戶與UNIX作業系統會話的語言,又可作為程式設計的語言,所以Shell是用戶與系統之間的接口,而且是一種比較高級、易被用戶理解和使用的程式設計語言,它為用戶提供了使用方便、功能強、又容易擴充的程式設計環境。

簡介

SHELL是UNIX系統的用戶與作業系統之間的一種接口。它既是UNIX系統的命令解釋程式,又是一種高級的命令程式設計語言。

作為命令解釋程式,SHELL接收用戶輸入的命令,將命令翻譯成一個動作序列,然後調用系統過程執行這條命令。

作為命令程式設計語言,SHELL具有一般高級語言的許多特徵,如變數定義、賦值、條件和循環語句等。用戶可以利用SHELL的這些功能將多條命令組織成一個命令程式,以完成某種特定的任務。這個命令程式稱為SHELL程式或SHELL過程。

特點

一、SHELL語言的優點在於:

1、SHELL語言非常適於編寫小的CGI應用程式。UNIX系統中的SHELL語言是功能非常強大的編程工具。

2、Windows NT支持POSIX標準,這意味著大多數常用的UNIX工具(例如sh)都可以在NT中運行。

3、使用SHELL語言編寫的應用程式短小精幹,運行時不會產生類似Perl語言解釋器之類的開銷,並且易於實現在不同系統之間的移植。

二、SHELL語言的缺點在於:

1、SHELL語言沒有象“真正”的程式語言那樣,提供靈活且功能強大的控制結構。

2、在SHELL程式中常常需要不斷地調用其它的工具(例如,grep、sed,甚至還有Perl)。

適用條件

SHELL語言是與複雜的高級程式設計語言混合成一體的強有力的互動命令解釋程式。利用它可進行程式設計,很好解決問題。下列三種情形可考慮用SHELL語言來書寫一個程式。

1、當一個問題的解法包含了許多XENIX系統的標準命令時,應使用SHELL語言。例如安裝高級語言和四連線埠適配器軟體,修改與銀行系統有關的一些檔案等,這些問題實質上是使用許多XENIX命令(tar、rm、mv、cd等)進行操作,因此,用 SHELL語言可構成很強的功能。

2、當一個問題所具有的基本數據是正文行或檔案時,則用SHELL語言是合適的。

3、當一個問題希望開發成本很低,又能忍受較慢執行速度時,應使用SHELL語言。

一般來說,如果一個問題能夠用SHELL語言編寫SHELL過程來一實現,那末就不必用C語言或其它高級語言來實現。這是因為:

(1)過程是一個普通的正文檔案,很容易用ed、ex/vi編輯命令或cat命令來建立。

(2)過程沒有相應必須生成和維護的目標程式。

(3)過程容易迅速創建,使用幾次,可以刪去。

(4)過程通常是很短的,用高級程式設計語言書寫且保持源語言形式,因此,容易尋找、理解和修改。

SHELL過程

一個SHELL過程是由能執行一個特定任務的一條或多條命令組成的。SHELL過程本身就是一個檔案,通過系統中的編輯工具(如vi等)產生。與其他檔案不同的是,它不需要編譯就可以執行。

Shell過程在調用時可以帶參數,這種參數稱為命令行參數,它們與Shell過程中的位置參數($1,$2,…,$9)相對應。如:

shcmd X Y Z

則Shell過程shcmd中的位置參數$1對應命令行參數“X”,$2對應“Y”,$3 對應“Z”。

SHELL變數

Shell提供了四類字元串變數,它們是:

(1)位置變數

如$0,$1,…,$9等,其中$0為SHELL過程名,$1到$9分別為過程名後的參數。

(2)用戶定義的變數

變數名由字母、數字等組成,變數的值為字元串。變數通過賦值語句進行定義。在SHELL過程中,通過“$變數名”的方式來引用變數的值。

(3)專用變數

這些變數對於SHELL具有特殊的含義。如變數HOME被初始化為用戶的登錄目錄,PATH為SHELL查找命令時所使用的查找路徑等。這些變數的值可以直接在Shell過程中引用,也可以由用戶重新定義。

(4)預定義變數

這些變數具有特殊的含義,用戶在程式中只能引用,而不能對它們進行修改。如$#記錄傳送給SHELL過程的參數個數,它不包括$0。

常用命令

常用的命令為使用SHELL界面開發用戶程式必須用到的命令,大致可以分成五大類。

(1)檔案管理類。cd,chmod,chown,chgrp,comm,cp,crypt,diff,file,find,In,ls,mkdir,mv,cd,pr,pwd,mv,mvdir。

(2)進程管理類。at,kill,mail,nice,nohup,ps,time,write,mesg。

(3)文本加工類。cat,crypt,grep,norff,unlq,WC、sort,spell,tail,troff。

(4)軟體開發類。CC,f77,login,logout,size,yacc,vi,emacs,dbx、lex,make,lint,ld。

(5)系統維護類。date,man,passwd,stty、tty,who等。

相關詞條

相關搜尋

熱門詞條

聯絡我們