Linux操作系统 第2版 教学课件 ppt 作者 刘丽霞 杨宇 第10章 Shell编程

上传人:E**** 文档编号:89400436 上传时间:2019-05-24 格式:PPT 页数:50 大小:1.35MB
返回 下载 相关 举报
Linux操作系统 第2版  教学课件 ppt 作者  刘丽霞 杨宇 第10章  Shell编程_第1页
第1页 / 共50页
Linux操作系统 第2版  教学课件 ppt 作者  刘丽霞 杨宇 第10章  Shell编程_第2页
第2页 / 共50页
Linux操作系统 第2版  教学课件 ppt 作者  刘丽霞 杨宇 第10章  Shell编程_第3页
第3页 / 共50页
Linux操作系统 第2版  教学课件 ppt 作者  刘丽霞 杨宇 第10章  Shell编程_第4页
第4页 / 共50页
Linux操作系统 第2版  教学课件 ppt 作者  刘丽霞 杨宇 第10章  Shell编程_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《Linux操作系统 第2版 教学课件 ppt 作者 刘丽霞 杨宇 第10章 Shell编程》由会员分享,可在线阅读,更多相关《Linux操作系统 第2版 教学课件 ppt 作者 刘丽霞 杨宇 第10章 Shell编程(50页珍藏版)》请在金锄头文库上搜索。

1、第10章 Shell编程,Linux Shell作为Linux下一种强大的管理工具,其本身也具备相当强的可编程性。如此就能根据不同的情况,使计算机做出不同的响应,以实现智能化管理的目的。本章将对Shell下的编程方法进行全面介绍。,10.1 Shell编程基础,10.1.1 介绍Shell脚本 简单地说,Shell脚本就是一个包含若干行Shell或者linux命令的文件。对于一次编写,多次使用的大量命令,就可以使用文件单独保存下来,以便日后使用。,通常Shell脚本以.sh为后缀。在编写Shell时,第一行一定要指明系统需要那种Shell解释用户的shell程序,如#!bin/sh,#!bin

2、/bash,#!/bin/csh,#!/bin/tcsh和#!/bin/ksh等。,10.1.2 输入输出重定向,Linux使用标准输入stdin和标准输出stdout,来表示每个命令的输入和输出,还使用一个标准错误输出stderr用于输出错误信息。这三个标准输入输出系统默认与控制终端设备相联系在一起的。因此,在标准情况下,每个命令通常从它的控制终端中获取输入,将输出打印到控制终端的屏幕上。,1输入重定向 输入重定向使用小于号“”实现;另一种是以附加的方式输出,使用两个大于号“”实现。,10.1.3 管道,管道和输入输出重定向十分类似。管道的作用是在一个命令的标准输出和另一个命令的标准输入之间

3、建立一个通道。,10.1.4 Shell里的特殊字符,和其他编程语言一样,Shell里也有特殊字符。常见的有美元符号($)、反斜线()和引号。 1美元符号 美元符号“$”表示变量替换,即用其后指定的变量的值来代替变量。,2双引号(“) 由双引号括起来的字符,除$、倒引号()和反斜线()仍保留其特殊功能外,其余字符均作为普通字符对待。 3单引号() 由单引号括起来的字符都作为普通字符出现。,4倒引号(),由倒引号括起来的字符串被Shell解释为命令行,在执行时,Shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。,10.1.5 Shell脚本的注释,Shell脚本和其他编程语言一

4、样,也拥有注释。注释方法为在注释行前加#号。,10.2 Shell变量,在Shell中有3种变量:系统变量、环境变量和用户变量。其中系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置,用户变量在编程过程中使用最多。,10.2.1 系统变量,Shell常用的系统变量并不多,但在做一些参数检测的时候十分有效。表10-1是Shell常用的系统变量。,表10-1 常用的系统变量,10.2.2 环境变量,当Shell程序启动时,都自动设置一组变量,这组变量就是环境变量。,10.2.3 用户变量,用户变量是最常用到的变量,使用也十分简单。 用户定义的变量名必须由字母数字及下

5、划线组成,并且变量名的第一个字符不能为数字。,10.2.4 变量的赋值与使用,Shell下的变量和C语言中的变量不同,无须声明即可使用,赋值同时即声明了变量。对于用户变量,用户可按如下方式赋值。 varible_name=value,10.2.5 数字和数组的声明,默认的赋值是对字符串赋值。 如果要对数字或数组进行声明,则要用declare命令。 当然也可以把两个变量放入一行。,declare支持的声明类型如下。使用“- 类型”开启,“+ 类型”关闭。 (1)i:定义整数integer。 (2)a:定义数组array。 (3)f:定义函数function。 (4)r:定义为只读readonly

6、。 (5)x:定义为通过环境输出变量。,10.3 Shell运算符,Shell也有自己的运算符,其运算符和C 语言基本类似。其运算符及结合方式见表10-3。优先级从上到下递减。,表10-3 运算符表,续表,10.4 Shell的流程控制,10.4.1 分支结构test命令 如果要对程序流程进行分支处理,首先需要对条件进行判断,这时就需要使用test命令。test命令被用来判断表达式并且产生返回值。,test命令不会产生标准输出,因此必须通过其返回值来判断test的结果,如果表达式为真,返回值会为0(TRUE),如果表达式为假,返回值为1(FALSE)。test命令可对整数、字符串,以及文件进行

7、判断,其使用方法如下: test expression 或者 expression ,1整数,用于比较整数的关系运算符有:-lt(小于)、-le(小于或者等于)、-gt(大于)、-ge(大于或者等于)、-eq(等于)、-ne(不等于)。,2字符串,用于字符串时,test可用的关系运算符有:=(等于)和!=(不等于)。,3文件,用于文件时,test可用的关系运算符如下所示。 (1)-f file:如果文件存在并且是一个普通文件(不是目录或者设备文件),会返回真。 (2)-s file:如果文件存在并且其字节数大于0,会返回真。 (3)-r file:如果文件存在并且是可读的时候为真。,(4)-w

8、 file:如果文件存在并且是可写的时候为真。 (5)-x file:如果文件存在并且是可执行的时候为真。 (6)-d directory:目录存在并且是个目录的时候为真。,4其他参数,除了上面介绍的参数外,test命令的可用参数还有如下这些。 (1)-a:逻辑与(AND)。 (2)-o:逻辑或(OR)。 (3)!:逻辑非(NOT)。 (4)( ):分组括号(GROUPING)。,10.4.2 分支结构if语句,if语句是用来表示判断的最常用的一条语句。其语法结构分为3种,如下所示。 1if结构 if结构的格式如下: if expression then EXPRESSIONS fi,2if/

9、else结构,if/else结构的格式如下所示: if expression then EXPRESSIONS else EXPRESSIONS fi,3if/elif/./else结构,if/elif/./else结构的格式如下所示: if expression then EXPRESSIONS elif then EXPRESSIONS elif then EXPRESSIONS . else then EXPRESSIONS fi,10.4.3 分支结构case语句,除了if语句外,case语句也是一个重要的分支语句。其含义和C语言中的switch语句相似。,case语句的格式如下所示:

10、 case word in condition1) EXPRESSIONS ; condition2) EXPRESSIONS ; . *) EXPRESSIONS ; esac,10.4.4 循环结构for语句,for语句是常用的循环语句,其格式如下所示: for NAME in LIST ; do EXPRESSIONS; done,10.4.5 循环结构while语句和until语句,除了for语句以外,还有两个语句可以执行循环,即while语句和until语句。,其语法格式如下所示: / while循环 while CONTROL-COMMAND; do EXPRESSIONS; do

11、ne / until循环 until TEST-COMMAND; do EXPRESSIONS; done,while循环和until循环的区别在于,while是当判断条件为真时才执行循环,而until循环在判断条件为假时才停止循环。,10.4.6 break、continue和exit语句,break语句的作用是在正常结束之前退出当前循环。例如下面求和的这个例子,while的循环条件永远为真,在循环体内部用了一个if语句跳出循环。 break语句的作用是不执行本次循环,直接跳到下一次循环。 exit语句用于中止脚本程序并返回值。,10.5 Shell函数,Shell里也可以使用函数。Shel

12、l函数的名字必须是唯一的,且符合变量命名规则。所有用来组织函数的命令就像普通命令一样执行。当以一个简单的命令名来调用函数的时候,和该函数相关的命令就被执行。,10.5.1 声明Shell函数,函数在必须声明,然后才能在Shell里执行。自定义函数可以采用如下所示两种方法声明。,/方法一 function FUNCTION_NAME EXPRESSIONS /方法二 FUNCTION_NAME () EXPRESSIONS ,10.5.2 调用Shell函数,Shell函数的调用也和C语言中调用函数的方法有所区别。其参数是直接跟在函数名后,而无须通过括号括起来,如下所示: FUNCTION_NA

13、ME PARAM1 PARAM2 .,10.5.3 递归调用,Shell也支持函数的递归调用。,10.6 编写交互脚本,前面介绍的都是非交互脚本,而实际上Linux中有许多脚本,需要来自用户的输入,或者在运行的时候给用户输出信息。交互脚本的优势有如下这些。,(1)可以建立更加灵活的脚本。 (2)用户可自定义脚本使得其在运行时产生不同的行为。 (3)脚本可以在运行过程中报告状态。,10.6.1 提示用户,提示用户最常用的命令是echo,其基本用法前面已经使用过很多次了。这里仅列出其常用的一些选项。 (1)-e:解释反斜杠转义字符。 (2)-n:禁止换行。 echo中常用的转义字符序列见表10-4。,表10-4 echo转义字符序列,10.6.2 接受用户输入,接受用户输入的命令为read 命令。read 命令的语法如下所示: read options NAME1 NAME2 . NAMEN 其选项如表10-5所示。,表10-5 read选项列表,小 结,本章对Linux Shell的脚本编程中一些重要知识进行了介绍。其中包括Shell的管道和输入输出重定向,Shell变量,以及Shell程序的控制结构与交互等几个方面。当然,学些Shell编程的主要目的还是为了管理Linux,只有将Shell编程和Linux系统管理结合起来,才能真正掌握Shell编程的精髓。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号