红旗linux案例教程第6章.ppt

上传人:牧羊曲112 文档编号:6485937 上传时间:2023-11-04 格式:PPT 页数:69 大小:611KB
返回 下载 相关 举报
红旗linux案例教程第6章.ppt_第1页
第1页 / 共69页
红旗linux案例教程第6章.ppt_第2页
第2页 / 共69页
红旗linux案例教程第6章.ppt_第3页
第3页 / 共69页
红旗linux案例教程第6章.ppt_第4页
第4页 / 共69页
红旗linux案例教程第6章.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《红旗linux案例教程第6章.ppt》由会员分享,可在线阅读,更多相关《红旗linux案例教程第6章.ppt(69页珍藏版)》请在三一办公上搜索。

1、第6章 shell编程,内容简介 Shell本身是一个用C语言编写的程序,它是用户使用Linux系统的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,如循环和分支结构。通过本章的学习,加深对Linux系统的了解,培养初步读懂Shell脚本程序的能力。,学习指导,第6章 shell编程,学习内容 shell编程的特点;shell变量;shell特殊字符;shell测试语句;shell条件语句;shell循环语句。学习目标 了解shell编程的特点;掌握sh

2、ell变量和特殊字符的应用;掌握测试语句、条件语句和循环语句的应用。学习重点 条件语句和循环语句的应用,学习指导,第6章 shell编程,学习建议 对于编程来说,语法是基础,理解是关键,多编程上机调试是学习编程的有效途径。建议读者首先将本章的例题按原代码输入,并上机调试,在调试中加深对原代码的理解。然后,再尝试不看原代码独立编写和调试,最后完成书本上的练习。另外,可以借鉴其他编程语言的编程手法,并注意与C语言作比较。,学习指导,6.1 shell编程的特点,案例:编写一个能显示“HelloWorld”的程序。通过操作一个简单的程序,引导学生进入学习shell编程。shell编程是Linux系统

3、核心的一部分,它调用了系统核心的大部分功能来建立文件、执行程序,并以并行的方式协调各个程序的运行。因此,对于高级用户来说,shell编程是重要的应用程序。shell编程与其它编程语言一样,有其自己的特点。,案例操作步骤:步骤一:利用文本编辑器输入源程序。用鼠标单击系统主菜单上的“开始”,并依次单击“应用程序”、“附件”、“文本编辑器”。出现“文本编辑器”的窗口,在窗口里输入源程序。,步骤二:保存源程序。“文件”菜单,并单击“另存为”按钮,步骤三:输入文件名。在“位置(L)”的空白处填入文件名,然后单击“保存”按钮。,步骤四:运行程序。在提示符后加一个英文的“.”符号,在点的空格后输入文件名,按

4、键,步骤五:由于本源程序比较短,可以直接在提示符下输入,并按键运行程序。,案例小结 shell编程分为如下两个步骤:1输入和保存源程序用编辑软件(文本编辑器)输入程序的源代码,然后保存。如果源程序较短的,可以直接在提示符下输入。2运行程序 在shell提示符下,键入“.程序名”,如键入“.”。要注意的是,“.”符号后要有空格。,6.1.1 shell编程及类型 1Shell是命令解释程序 Linux系统有三个重要的部分:核心、Shell和工具程序。核心部分是处于底层的,用户不能和它直接沟通,因此,必须要有一个友好的界面,让用户通过它和底层沟通。这个界面便是Shell。当用户登录Linux系统之

5、后,系统初始化时就为用户运行一个称为shell的程序。Shell的本意是“壳”的意思,这里的shell有其保护核心程序的功能。,2几种流行的shell及其特点(1)bash 一般的Linux系统都将bash作为默认的shell。(2)ksh(3)csh(4)zch(5)ash ash shell是由Kenneth Almquist编写的,Linux系统中占用系统资源最少的一个,它只包含24个内部命令,3shell的基本命令(1)查看shell类型的命令#echo$SHELL(2)转换shell类型的命令#shell-name(3)退出shell的命令#exit,4案例程序的解释 案例程序的第一

6、行“#!/bin/sh”中的“#!”,表示不管是哪一种类型的shell,都是可执行程序。“/bin/sh”表示选择用bach类型。例如,如果是Perl类型的,则是“#!/usr/bin/perl”。若是tcsh的,则是“#!/bin/tcsh”。第二行的“#Filename:hello”,是指程序的名称。第三行的“echo”是bash的内部的命令,表示要显示屏幕文字。,5Shell程序的运行 1 在shell提示符下,键入命令“sh 程序名”,如键入“sh”。2.给源程序赋予可执行属性“x”,在shell提示符下,如键入命令“chmod a+x 程序名”。,6.2 shell变量,案例:分别把

7、zjyvs1、“zjyvs2”、4+5赋给变量s1、s2、s3,然后分析运行结果 通过给变量赋值,学习shell变量的相关知识。在程序运行过程中,其值可以改变的量称为变量。一个变量用一个名字来表示,并占据一定的存储单元,在该存储单元中存放变量的值。程序运行时从变量中读取值,实际上是通过变量名找到相应的内存地址,再从其存储单元中读取数据。,1、案例操作步骤:步骤一:利用“文本编辑器”输入如下的源程序,以文件名“”存盘。#!/bin/sh#Filename:s1=zjyvs1 echo$s1 s2=zjyvs2 echo$s2 s3=4+5 echo$s3,步骤二:调试程序并分析程序运行结果,案例

8、小结 Shell与其它的编程语言一样,在使用前要进行变量的定义。在默认情况下,所有变量都被看作字符串类型,并以字符串来存储,即使它们被赋值为数字时也是如此。另外,可以通过在变量名前加一个“$”符号来读取变量的值。,6.2.1 变量的赋值 1shell变量赋值格式 在shell编程中,给变量赋值的格式如下:变量名=值 如果要输出一个变量的值,只需在变量名前面加一个“$”。,2变量名的命令规则 变量名由120个字符构成,这些字符可以是字母、数字和下划线“_”;首个字符必须为字母(a-z,A-Z)或下划线;中间不能有空格,但可以使用下划线“_”;不能使用标点符号,也不能使用bash里的关键字(可用h

9、elp命令查看保留关键字);shell变量名是区别大小写的,s和S是属于不同的变量名。,3案例程序解释 案例程序第三行的“s1=zjyvs1”是表示给变量s1赋值,第四行的“echo$s1”表示输出变量s1的值,第五行的“s2=“zjyvs2”表示给变量s2赋值,第六行表示输出变量s2的值,第七行“s3=4+5”表示给变量s3赋值,第八行“echo$s3”表示输出变量s3的值。,6.2.2 特殊变量 1参数变量 如果shell程序在调用时带有参数,就会创建一些额外的变量,这些变量称为特殊变量。参数变量是其中的一种。,2环境变量 当一个shell程序开始执行时,一些变量会根据环境设置中的值进行初

10、始化。环境变量的命名规则与普通变量相同,但为了区分两种变量,一般约定环境变量用全部大写字母命名,普通变量用小写字母命名。,6.3 shell特殊字符,案例:运行含有双引号、单引号和反斜线的程序 通过运行有特殊字符的程序,掌握特殊字符的应用。shell中除使用普通字符外,还可以使用一些具有特殊含义和功能的特殊字符。在使用时,应注意其特殊的含义和作用范围。,1、案例操作步骤:步骤一:分析程序代码,写出运行结果#!/bin/sh myvar=Hello Zjyvs echo$myvar echo$myvar echo myvar echo myvar echo Enter some text rea

11、d myvar echo myvar now equals$myvar,步骤二:调试程序并分析程序运行结果,案例小结 使用双引号与使用“$”效果一样,使用单引号和反斜线不进行变量的替换。使用read命令从用户那里读入一个字符串,再输出变量的值。,6.3.1 反斜杠的应用 在某个字符前利用反斜杠可以阻止shell 把后面的字符解释为特殊字符。例如,把字符串“$Zjyvs”赋给变量s,若使用如下语句:s=$Zjyvs 则表示存放在s中的值将是一个空值。若使用如下语句,才能将字符串“$Zjyvs”存放在s中:s=$Zjyvs,6.3.2 引号的应用 在shell中,引号分为三种:单引号,双引号和反引

12、号。1单引号 由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。2双引号 由双引号括起来的字符,除“$”,“”,“”和“”这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。,6.3.2 引号的应用 在shell中,引号分为三种:单引号,双引号和反引号。3反引号 反引号()字符所对应的键位于键盘的左上角,不要将其同单引号()混淆。反引号括起来的字符串被Shell解释为命令行。在执行时,Shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。,6.3.3 常见特殊字符的归纳,6.4 shel

13、l测试语句与条件语句,案例:通过运行测试语句和条件语句两个案例,学习测试语句和条件语句的应用。案例1 判断字符串“zjyvs”、“Zjyvs”和“zjyvs”是否相等。案例2 判断15和8是否相等,如果不是的,就显示“15 is not equal to 8”,1、案例操作步骤:步骤一:分析程序代码,写出运行结果#!/bin/shstr1=zjyvsstr2=Zjyvstest$str1=$str2/当两个字符串相同时,则为真。echo$?test$str1=zjyvs/当两个字符串相同时,则为真echo$?test$str1=zjyvsecho$?test-n$str1/当字符串的长度大于0

14、时,则为真(字符串非空)echo$?,2、案例操作步骤:步骤一:分析程序代码,写出运行结果#!/bin/sh i=15 j=8 if$i-ne$j then echo$i is not equal to$j fi,步骤二:调试程序并分析程序运行结果,案例小结 shell编程中的测试语句与其它高级语言不同的是,它不是通过布尔量来进行判断的。而是通过命令和字符串来判断条件的。条件语句是以if为开始标志,以fi为结束标志,这是bash shell的特征。,6.4.1 测试语句test 1测试语句的测试符号(1)数值测试,(2)字符串测试,(3)文件测试,2测试语句的应用(1)整数比较,2.字符串比较

15、,6.4.2 条件语句 条件语句根据程序运行到某种条件来决定后面的流程,判断的条件是通过上面的测试语句来完成。这些条件只有两种判断结果:真(成立)或假(不成立)。条件成立值为0,不成立值为1。1if条件语句 1)语句格式if 条件命令串then else fi,2)语句功能 在执行if语句时,先判断所给的条件是否满足,如果条件命令串的值为真,条件满足,则执行行语句组1,然后由fi退出;如果条件字符串的值为假,条件不满足,则跳过then部分,执行else部分的语句组2,然后由fi退出。,3)语句说明(1)语句组1和语句组2可以是一个语句,也可以是一组语句,语句的数量没有限制。(2)else部分是

16、任选的,故可以省略。例如:if 条件命令串then fi(3)if与fi是不可分隔的一对,是一个整体,不能缺少fi;(4)语句组1和语句组2可以空缺,语法上是合法的,但没有意义;,2if嵌套语句 在if语句中又包含一个或多个if语句称为if嵌套语句。嵌套语句格式if 条件命令串then elif 条件命令串 then else fi,3 case选择语句 if条件语句主要用于在两个选项中选定一项,而case选择语句为用户提供了根据字符串或变量的值从多个选项中选择一项的方法。1)语句格式 case in 字符串1)若干个命令行1;字符串2)若干个命令行2;*)其他命令行;esac,2)语句功能

17、先求测试字符串表达式的值,然后按从上到下,依次寻找与之相匹配的子句中的字符串。如果找到了,则执行该子句下的命令行;如果没有找到,则执行case语句中字符模式里可以包含象*这样的通配符的命令行。3)语句说明if-else结构也能支持多路的分支,但是当有两个或者三个分支以后,程序会变得十分难以阅读和理解。case结构提供了实现多路分支的一种更方便更直观的方法。case多分支选择是顺序地对一个测试字符串与提供的参数之间的比较结果,这些比较是严格的基于字符串的对比。当一个匹配成功的时候,对应的命令就会被执行。,6.5 shell循环语句,案例:通过运行两个含有循环语句的程序,学习循环语句的应用 案例1

18、 分别使用for和while循环语句,连续输出10次完全相同字符串“Welcom to Zjyvs”。案例2使用while循环语句编写一程序,求sum=1+2+3+4+5+6+10的和。,1、案例1操作步骤:使用for语句 步骤一:分析程序代码,写出运行结果#!/bin/shfor i in 1 2 3 4 5 6 7 8 9 10do echo Welcome to Zjyvs done,步骤二:程序运行结果,使用while语句 步骤一:分析程序代码,写出运行结果#!/bin/shi=1while$i-le 10 do echo Welcome to Zjyvs i=$($i+1)done,

19、步骤二:程序运行结果,2、案例2操作步骤:步骤一:分析程序代码,写出运行结果#!/bin/shi=0sum=0while$i-lt 10 do i=$($i+1)sum=$($sum)+$($i)done echo sum=$($sum),步骤二:程序运行结果,6.5.1 for循环 for循环对赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。1)语句格式 for变量名 in 值列表 do 命令行 done,2)语句功能 在for循环语句中,先检查变量的值是否在in中的值列表内,若是就执行do-done之间的循环体,然后再检查下个值是否在值列表中。重

20、复执行上面的操作,直到in列表中的值完全执行,才跳到done出口处退出循环,接着再执行done下面的语句。3)语句说明 变量名可以是用户选择的任何字符串,如果变量名是var,则在in之后给出的数值将顺序替换循环命令列表中的$var。如果省略了in,则变量var的取值将是位置参数。对变量的每一个可能的赋值都将执行do和done之间的命令列表。,6.5.2 while循环 如果不知道要循环的次数,但知道循环结束的条件,这时可以用while循环语句 1)语句格式 while do 循环体 done,2)语句功能 在while循环语句中,先判断循环条件是否为真,若为真,则执行do-done之间的循环体

21、,然后再检查上述条件是否为真。如果为“真”则再执行一次do-done之间的循环体,直到条件为假时,才跳到done出口处退出循环,接着执行done下面的语句。3)语句说明 while循环结构必须以while语句开头,以done结束。do-done之间的语句组称之为“循环体”。在使用while循环时,应注意务必使“条件”最终变为“假”,这样才能使循环终止,否则将永无终止地循环下去,这叫做“死循环”。,6.5.2 until循环 1)语句格式 until do 循环体 done,2)语句功能 until循环与while循环很相似,只是把条件测试反过来了。换句话说,循环将反复执行直到条件为真为止,而不

22、是在条件为真时反复执行。3)语句说明 until语句适合应用在这样的情况:即让循环不停地执行,直到某些事件发生为止。,本章小结 本章主要介绍Shell程序上机运行的步骤:输入源程序和运行程序。测试语句test可以测试数字、字符串和文件。在编程实际应用中,很多时候test和if语句一起连用。循环语句for对循环的控制不是通过测试而是通过引用几个值的列表,依次对特定的变量进行赋值。而循环语句while和 until则是通过测试来控制循环的。,本章练习 思考题 1请根据自己的认识,写出shell编程的主要特点,其他高级语言有什么异同?2测试语句test有哪些测试功能?通常与那些语句联合使用?3循环语

23、句while和 until有哪些区别?4循环语句for有什么特点?5简述shell变量和特殊字符。6指出下列字符串哪些可以作为shell的变量名?(1)A2(2).abC(3)3A(4)A_4(5)A 2(6)A.4(7)A,4(8)HOME,本章练习 7分析下面程序代码,写出程序的运行结果。(1)#!/bin/sh#filename Skt6.1 num=4*6 echo$num(2)#!/bin/sh#filename Skt6.2 num=4*6“echo$num,本章练习(3)#!/bin/sh#filename Skt6.3 if$name=then echo The name va

24、riable is null fi,本章练习(4)#!/bin/sh#filename Skt6.4 if grep$name/etc/passwd then echo Found$name!else echo Cant find$name.exit 1 fi,本章练习(5)#!/bin/sh#filename Skt6.5 for pal in Tom Dick Harry Joe do echo Hi$pal done echo Out of loop,本章练习 上机操作题 1分别使用for、while和until语句编写程序,求s=n!2编写一个程序,判断从键盘输入的字符是大写字母还是小写字母。3编写一个程序,输入3个整数,找出最大值和最小值。4编写一个程序,输入一百分制成绩,要求输出成绩的等级“A”、“B”、“C”、“D”、“E”。90分以上为“A”,80至89分为“B”,70至79分为“C”,60至69分为“D”,60分以下为“E 5通过键盘输入数字17,打印输出相应的星期几。,本章练习 上机操作题 6打印出如下图形*,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号