
SHELL语言
SHELL语言是指UNIX作业系统的命令语言,同时又是该命令语言的解释程式的简称。SHELL作为语言来说,它既是终端上的用户与UNIX作业系统会话的语言,又可作为程式设计的语言,所以Shell是用户与系统之间的接口,而且是一种比较高级、易被用户理解和使用的程式设计语言,它为用户提供了使用方便、功能强、又容易扩充的程式设计环境。
基本介绍
- 中文名:SHELL语言
- 外文名:SHELL language
- 优点:方便移植、代码量小等
- 缺点:需要调用其它工具等
- 套用系统:UNIX系统
- 学科:计算机科学
简介
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等。