Linux_Shell编程.ppt_第1页
已阅读1页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第16次shell编程,16.6 shell概述16.6 shell变量16.6 shell的特殊字符16.6 shell的控制结构16.6 shell应用16.6总结练习题,shell是指令语言,也是编程语言。 shell的语言处理能力使用户能够轻松定义各种变量和残奥仪表,使用各种控制语句编写复杂的命令程序和执行各种任务。 本课程介绍了shell、shell编程语言、shell运行环境和shell程序的示例。 16.1.1 shell概述16.1.1 shell是指命令解释器(命令解释器),shell解释用户输入的命令行,发送系统内核处理,并向用户返回结果。 实用程序与Linux命令相同,但

2、两者有所不同。 用户在系统中注册后,shell将由系统加载到内存中,直到用户退出系统。一般命令仅在调用时由系统加载内存执行。 shell本身也是一种可编程语言。 用shell编写的程序(shell脚本)相当于dos/windows中的批处理文件,可以只有一个命令,也可以是大量的循环、条件语句、数学运算、控制结构或其间的程序。 16.1.2 shell程序语言的特征shell可以通过编程完成复杂的功能处理,但它在语言上与高级语言相比有着不同的特征: (1) shell是说明性的,很多高级语言是编译性的;(2) shell语言和高级语言处理的对象不同;(3) shell与系统有着密切的关系(4)

3、shell容易写入、调试、灵活性强,但速度低(5) shell作为指令级语言,指令组合功能强。16.1.3 bash的特征shell有两种主要语法类型: bourne shell和c shell,它们不兼容。 bourne shell家族: sh ksh基本psh zsh; c壳家族: csh tcsh。 其中,bash和zsh在一定程度上支持csh的语法。 在此,再次重点介绍bash的特征: (1)假定自动补充功能输入的命令长,或者命令后面赋予的文件名长。 此时,只需按Tab键,bash就会在可能的命令和文件名中找到一致的命令,找到后自动补充。 (2)命令行编辑程序bash的命令行编辑可以在

4、提示符下任意修改未执行的命令字符。 (3)指令履历(command history )指令履历是指记录一次输入的指令,方便日后的询问和使用。 只要按向上键就能够调用前面的指令,再次按向上键就能够调用前面的指令,这样通过向下键就能够转换为下一个指令,因此能够通过向上键和向下键选择之前输入的指令。 创建和运行16.1.4 shell程序,使用任意文本编辑器创建shell文件(xxx ) (例如gedit xxx或vi xxx ),将shell文件更改为可执行文件(例如$chmod u x xxx )并运行/bii asimpleshellscriptexample # afuctionfuncti

5、onsay _ hello () echo“enter your name,please.”读取名称“hello $ name”echo“pro 也就是说,作为字符串变量只能存储一种变量。 但是,从代入的形式来看,可以分为4种变量或变量的形式。 变量的名称必须以字母或下划线开头,并且可以包括字母、数字和下划线。 16.2.2用户定义的变量用户定义的变量语法格式: name=string,赋值编号=的两侧不允许空格。 示例: node host=Beijing.uucp path=/bin :/usr/bin :/etc/bincount=10允许多个代入操作,从右到左顺序进行。 示例: # a

6、=b b=ABC c=ok #如果引用未设置的变量,则默认值为空。示例: # echomailispathofmailboxispathofmailbox,如果将值括在双引号“”中,则包围的字符串允许空格、制表符、换行符等特殊字符,也允许替换变量。 示例1:# mail=/var/mail/fk # var=mailispathofmailbox # echo var/var/mail/fkispathofmailbox示例2示例3:# book=English book # msg=book # EC echomsgtodayissunday,引用变量示例5:# str=this isa s

7、tring # echostrenttestofvariablesthisisastringenttestofvariables # echostrenttestofvariables 此位置变量在系统中是预定义的,可以直接引用。 命令行中的shell过程名称本身被指定为位置变量0,第一个命令残奥参数为1,第九个命令残奥参数为9。 示例: ls/bin /etc /usr/bin /dev 0 1 2 3 4 5,$n : $1表示第一个残奥参数,$2表示第二个残奥参数. $#:命令行残奥参数的个数$0 :前的命令或函数的返回代码。 如果成功,则返回0,反之,返回0以外的值。 $* :将所有的

8、残奥仪表保存为“残奥仪表1残奥仪表2 .”$ :将所有的残奥仪表保存为“残奥仪表1”“残奥仪表2 .”$ :本程序的(进程ID号) PID $!之前的命令的PID创建程序p 1: echo“程序名称is $ 0”echo“以下参数总计$ #参数spassedtothisprograation”,其中包括: echo “The parameters are $*”执行后的结果是user 21本地主机库$ p1thisisatestprogram/5个关残奥计量器程序名称is/home/传递的程序的完整路径和名称there are totally5parameterspassedtothispro

9、gram/残奥仪表的总数The last is 0 /程序执行结果theparametersarethisisatestprogram/程序执行结果16.2.4环境变量shell实例由shell维护和管理的一组环境变量组成。 所有这些变量都可由用户重新设置,变量名称由大写字母或数字组成。 cdPATH执行CD命令时使用的搜索路径。 HOME用户的HOME目录PATH搜索命令或可执行文件的搜索路径PS1主命令提示符,默认值为“; PS2在默认情况下,从命令提示符中输入: TERM使用的终端类型。 PS1中可用的信息$提示显示$显示当前日期h显示主机名t显示s shell名t显示当前时间(24)

10、T显示当前时间(12 )显示当前时间(AM/PM) u显示用户名v显示bash版本w显示当前工作目录w显示当前工作路径匹配任意一个字符。 使指定字符以范围、列表或不匹配等形式匹配;重新定义原始字符,使其失去特殊意义。 例如: a-d、x、y匹配文字a、b、c、d、x、y。 z*符合任何以字母z开头的字符串,x? y以x开头,以y结尾,中间与任意一个字符的字符串匹配,不要! z匹配一个非z字符。使用通配符作为文件扩展名的示例:从a-f*字符a到字符f的开头的文件名(例如,abc、d2、e3.c、f.dat; *z与以字符z结尾的任何字符串相匹配,如win.z、core.zz和a-c-5z。 rc

11、? 以. drc开头,以. d结尾,中间为任意一个字符的文件名(例如,rc0.d、rc2.d、rcS.d; *! o与不以o结尾的文件名相匹配。 2 .单引号() 删除单引号中所有特殊字符的含义。 也就是说,单引号表示内容保持原样。 示例1: echo type a * please type a * please示例2 :在指定的目录中查找名为*.zh或. sh的文件。 cattest.sh grep *.zh|. sh 1,3 .使用双引号(“),可以删除双引号中大部分特殊字符的含义。 不能删除的字符是、 示例1:echo类型a *、放置类型a *、放置示例2:v date=日期系统维护时

12、间! 示例3 :请注意cat share-file mkdir/tmp/fk chmod 755/tmp/fkcp/tmp/fk chmod 777/tmp/fk/*,4撇号() 和单引号的区别。 例1:now=dateechonowdatenow=dateechonow 1998年10月28日星期三17点51分56秒CST例2:count=10 count=expr count1echo count 11。 示例:转义字符具有连续行进功能catback.shechoenteryourname : creadnameechohelloname。 这些控制字符串显示bbackfackc后,不换行

13、的f在终端上的画面开头显示n换行r换行r换行t标签v垂直标签反斜线,6 .管道的概念。 管道线:由管道操作符分隔的命令序列,其中最简单的管道线是简单的命令。管道操作符: |”表示。 例如: w|wc -l ps aux|grep ftp, 如果=:不相等,则为真例1 :两个字符串行比为user=smith test user=smith echo? 0测试用户=Tom echo? 1、例2 :带空格的字符串比month=januarytestmonth=January echo? 1测试蒙特=日本体育? 0注: shell在处理变量时,如果有双引号则保留其内容,如果省略双引号则过滤空格。 例3

14、 :带空格的字符串比a=testingstringtesta=testingstringecho大吗? 0 testa=testingstring test : unknownoperatorstringshell处理变量a后,将其替换为变量,将“结果”(testing string )传递给test,test传递字符串, 3 .使用test测试字符串时需要注意的问题(1)传递给test的各变量之间需要空白字符,“=”和任一参数之间没有空白字符时会发生错误。 (2)需要用双引号括住用变量值替换的参数,使test在变量值为空时也能够接受该参数,这是很好的shell编程样式。 (在test命令测试中,空格和引号是shell编程中经常出现的错误的焦点,特别需要注意。 (4) test命令非常注重其自变量,在比较的字符串中出现运算符时,考虑运算符的优先顺序问题。 4. test命令可用于整数比较。 首先需要明确整数比较的两个概念。 shell不区分放置在she

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论