实验9 Shell编程.ppt_第1页
实验9 Shell编程.ppt_第2页
实验9 Shell编程.ppt_第3页
实验9 Shell编程.ppt_第4页
实验9 Shell编程.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、1,实验9 Shell编程,2,一. 实验目的:,1.了解 UNIX shell 的作用和主要分类。2.了解 Bourne shell( 简称sh)的一般语法规则。3.能编写简单的shell程序,3,二. 实验内容:,1.Shell变量的定义及其使用。 2.位置参数和环境变量。 3.Shell中的特殊字符。 4.一般控制结构。,4,三、实验步骤,一、Shell变量:Shell有两种变量:环境变量和临时变量。在Shell脚本中临时变量又分为两类:用户定义的变量和位置参数。1. 用户定义的变量用户定义的变量是最普遍的Shell变量,变量名是以字母或下化线打头的字母、数字和下线符序列,并且大小写字母

2、意义不同。变量名的长度不受制。定义变量并赋值的一般形式是: 变量名=字符串 例如,myfile=/usr/meng/ff/m1.c在程序中使用变量的值时,要在变量名前面加上一个符号“$”。这个符号告诉Shell,要读取该变量的值。,5,(1)定义并显示变量的值 $ dir=/usr/mengqc/file1 $ echo $ dir /usr/mengqc/file1 $ echo dir dir $ today=Sunday $ echo $ today $ Today Sunday $ str=Hapy New Year ! $ echo Wish You $str Wish You Ha

3、ppy New Year !,6,2)read命令 作为交互式输入手段,可以利用read命令由标准输入(即键盘)上读取数据,然后赋给指 定的变量。其一般格式是:read 变量1 变量2. 例如: $ read name -输入read命令 mengqc -输入name的值 $ echo Your Name is $ name. Your Name is mengqc -显示输出的结果 $ read a b c -read命令有三个参数 crtvu cn edu -输入三个字符串,中间以空格隔开 $ echo Email : $a. $c. $b Email : -显示输出结果,7,利用read

4、命令可交互式的为变量两赋值。输入数据时,数据间以空格或制表符作为分隔符 。注意以下情况: *若变量个数与给定数据个数相同,则依次对应赋值,如上面例子所示。 *若变量数少于数据个数,则从左至右依次给变量赋值,而最后一个变量取得所有余下数 据的值。 *若变量个数多余给定数据个数,则从左到右依次给变量赋值,后面的变量没有输入数据 与之对应时,其值就为空串。,8,2. 位置参数执行Shell脚本时可以使用参数。由出现命令行上的位置确定的参数称做位置参数。在sh中总共有十个位置参数,其对应的名称依次是$0,$1,$2,.$9。其中$0始终表示命令名或Shell脚本名,对于一个命令行,必然有命令名,也就必

5、定有$0;而其它位置参数依据实际需求,可有可无。,9,(一)位置参数作用: (1)在你的计算机上建立以下三个文件(设建立在目录/usr/username之下,其中userna me表示你的主目录名): 文件m1.c: main( ) printf(Begin n); 文件m2.c: # include printf(OK! n); 文件ex3: # ex3: shell script to combine files and count lines cat $1 $2 $3 $4 $5 $6 $7 $8 $9 | wc -l # end,10,(2) 将ex3改为具有执行权限: $ chmod

6、 +x ex3 (3) 利用env命令查看在环境变量PATH中是否包含你的当前工作目录(即/usr/use-name )。如果没有包含在其中,则利用以下语句改变PATH的值: $ PATH= $ PATH:/usr/usr/username (4) 执行脚本ex3: $ ex3 m1.c m2.c,11,(二)用set设置位置参数值。(1) 在你的工作目录中以下脚本文件ex4:# ex4: shell script to combine files and count lines# using command set to set positional parametersset m1.c m

7、2.cecho $1echo $2echo $3cat $1 $2 $3 | wc -l# end,12,(2) 将ex4改为具有执行权限:$ chmod +x ex4(3) 执行脚本ex4:$ ex4m1.cm2.c,13,(三)利用位置参数给定变量赋值。(1) 建立脚本ex5,如下所示: n1=$1n2=$2n3=$3cat $n1 $n2 $n3 | wc -l(2) 将ex5改为具有执行权限:$ chmod +x ex5(3) 执行脚本ex5:$ ex5 m1.c m2.c,14,二、SHELL中的特殊字符1.通配符通常的通配符有三种:* 星号,它匹配任意字符的0次或多次出现。但注意,

8、文件名前面的圆点(.)和路径名中的斜线(/)必须显示匹配。? 问号,它匹配任意一个字符。 一对方括号,其中有一个字符组。其作用是匹配该字符组所限定的任意一个字符。应该注意:字符 * 和 ?在一对方括号外面是通配符,若出现在其内部,它们就失去通配符的能力了。! 叹号,若它紧跟在一对方括号的左方括号之后,则表示不在一对方括号中所列出的字符。,15,2.引号在SHELL中引号分为三种:单引号、双引号、和倒引号。(1)双引号由双引号括起来的字符,除$、倒引号和反斜线()仍保留其功能外,其余字符通常作为普通字符对待。例9-8 1.建立以下文件ex8:echocurrent directory ispwd

9、echohome directory is $ HOMEechofile * . ?echo directory $ HOME 2.执行ex8:$sh ex8,16,(2)单引号由单引号括起来的字符都作为普通字符出现。(3)倒引号例如:$ today=date$echo Today is $ todayToday is Thu May 04 10 :56 :20 CST 2000$又如:$ users=who | wc -l$ echo The number of users is $ usersThe number of users is 5$(4)反斜线转义字符,若想在字符串中使用反斜线本

10、身,则必须采用()的形式,其中第一个反斜线作为转义字符,而把第二个反斜线变为普通字符。,17,三、 控制结构1.if 语句例9-9(1)建立脚本ex9:echo The current directory is pwdif test - f $1then echo $1 is an ordinary file.else echo $ 1 is not anordinary file.fi,18,(2) 执行ex9: $sh ex9 ex1 The current directory is /usr/mengqc ex1 is anordinary file. if语句的else部分还可以是el

11、se-if结构。 (wj14) if test - f $1 then cat $1 else if test - d $1 then ( cd $1 ;cat * ) else echo $1 is neither a file nor a directory. fi fi,19,如上例改写成为: if test -f $1 then cat $1 elif test -d $1 then ( cd $1 ; cat * ) else echo $1 is neither afile nor adirectory. fi,20,2.测试语句: 有两种常用形式:一种是用test命令,如上所示。

12、另一种是用一对方括号将测试条件括起来。两种形式完全等价。例如,测试位置参数$1是否是已存在的普通文件,可写成:test -f $1,也完全可写成: -f $ l 在格式上应注意,如果在test语句中使用shell变量,为表示完整、避免造成歧异起见最好用双引号将变量括起来。利用一对方括号表示条件测试时,在左方括号之后、右方括号之前各应有空格。 例9-10 (1)建立脚本文件ex10 echo Enter your filename read filenane if -f $filename then cat $ filename else if -d $ filename then cd $ f

13、ilename ls -l * else echo $ filename:bad filename fi fi (2)执行ex10$sh ex10,21,3.while语句例9-11(1)建立脚本ex11:while $1 doif -f $1 then echo display : $1cat $1else echo $1 is not a file name.fishiftdone(2)执行ex11,22,例9-12(1)建立脚本ex12:echoley in file-cread filenameechokey in data:while n $xdoread xecho $x$ filenamedonecat $ filename(2)执行ex12,并分析结果。,23,4.for语句例如: (wj19)for day in Monday Wednesday Friday Sundaydoecho $ daydone ((例如: (wj20)for file in m*.cdocat $ file | moredone,24,例9-13(1)建立脚本ex13:# display files under a given directory# $1-the nameof the diectory# $2-the of

温馨提示

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

评论

0/150

提交评论