如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第5章shell编程shell是一种命令语言,同时又是一种程序设计语言。shell的语言处理能力,使得用户能够方便地定义各种变量、参数,并使用各种控制语句编写复杂的命令程序完成多种工作。本课介绍shell、shell程序设计语言、shell的运行环境及shell程序的实例。1shell概述1.1什么是shellshell是一种命令解释程序(命令解释器),shell解释用户输入的命令行,提交系统内核处理,并将结果返回给用户。与Linux命令一样都是实用程序,但两者又有区别。一旦用户注册到系统后,shell就被系统装入内存,并一直运行到用户退出系统之止;而一般命令仅当被调用时,才由系统装入内存执行。shell本身也是一种可编程的程序设计语言。用shell写的程序(shell脚本)相当于dos/windows下的批处理文件,它可以简单到只有一条命令,也可以复杂到包括大量循环、条件语句、数学运算、控制结构,也可以是介于两者之间的程序。1.2shell程序语言的特点shell允许通过编程来完成复杂的功能处理,但其作为语言与高级语言相比较具有不同的特点:(1)shell是解释性的,多数高级语言是编译性的;(2)shell语言与高级语言处理的对象不同;(3)shell与系统有密切的关系;(4)shell易编写、调试、灵活性较强,但速度低;(5)shell作为命令级语言,命令组合功能很强。1.3bash的特点shell有两种主要语法类型:Bourneshell和Cshell,彼此不兼容。Bourneshell家族:shkshbashpshzsh;Cshell家族:cshtcsh。其中bash和zsh在不同程度上支持csh的语法。这里,我们再着重介绍一下bash的特点:(1)自动补全功能假设要输入的命令很长,或者命令后面要给的文件名很长。这个时候只要按一个Tab键,bash就会在可能的命令或文件名里面找寻匹配的命令,找到的话就会自动帮你补齐。(2)命令行编辑程序bash的命令行编辑是在提示符下,可对未执行的命令字符任意地修改。(3)命令历史(commandhistory)所谓的命令历史就是把曾经输入过的命令记录起来,方便日后的查询与使用。只要按向上键就可以调出前一个命令,再按一次向上键就可以调出更前一个命令,依此类推,用向下键可以回到下个命令,所以用上、下键就可以选择以前输入过的命令。Shell编程注意事项1.4Shell程序的创建与执行1.5Shell程序示例2shell变量2.1shell变量描述shell实际上是基于字符串的程序设计语言,但也有变量。shell变量能够而且只能存储正文字符串,即它只有一种类型的变量即串变量。但从赋值的形式上看,则可以分成四种类型的变量或变量形式。变量的名字必须以字母或下划线开头,可以包括字母、数字和下划线。2.2用户自定义变量取消变量——unsetname用户自定义变量语法格式:name=string,赋值号“=”两边不允许有空白符。例:nodehost=beijing.UUCPpath=/bin:/usr/bin:/etc/bincount=10允许多个赋值操作,按从右到左的顺序进行。例:#A=$BB=abcC=″OK″#echo$A$B$CabcabcOK当引用一个未设置的变量时,其隐含值为空。例:#echo″$mailispathofmailbox″ispathofmailbox如果用双引号“”将值括起来,则括起来的字符串允许出现空格、制表符和换行符等特殊字符,而且允许有变量替换。例1:#MAIL=/var/mail/fk#var=″$MAILispathofmailbox″#echo$var/var/mail/fkispathofmailbox例2:#str=″Thisis\nabook″#echo$strThisisabook如果用单引号‘’将值括起来,则括起来的字符串允许出现空格、制表符和换行符的特殊字符,但不允许有变量替换。例3:#BOOK=″Englishbook″#MSG=′$BOOK′#echo$MSG$BOOK例4:#msg=′TodayisSunday′#echo$msgTodayisSunday引用变量的值时,可以用花括号{}将变量名称括起来,使变量名称与它的后续字符分隔开,如果紧跟在变量名称后面的字符是字母、数字或下划线时,必须要使用花括号。例5:#str=′Thisisastring′#echo″${str}enttestofvariables″Thisisastringenttest