项目Shell程序设计基础_第1页
项目Shell程序设计基础_第2页
项目Shell程序设计基础_第3页
项目Shell程序设计基础_第4页
项目Shell程序设计基础_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

项目4-1:Shell程序设计基础第一篇linux办公系统管理与应用项目描述

某学校Linux操作系统的教学过程中,经常需要把已写好的程序从USB存储设备拷贝到Linux系统。但在Linux系统字符界面使用USB存储设备的过程中要经常重复USB设备加载、文件复制、USB设备卸载等多个操作步骤。频繁的输入这些操作命令给USB设备的使用带来很多不便;由此提出通过编写一段Shell脚本程序来解决USB设备的便捷使用问题。

项目导入任务分解:任务1:理解Shell脚本的概念任务2:认识Shell中的变量任务3:掌握Shell表达式的使用任务4:掌握Shell分支结构任务5:掌握Shell循环结构项目分析学习目标技能目标知识目标能力目标掌握Shell变量的概念和使用方法灵活运用Shell表达式掌握分支结构和循环结构掌握Shell变量和环境变量的设置、取消以及系统变量的运用掌握Shell中的算术运算表达式、关系与逻辑表达式能够读懂Shell脚本,能够进行基本的Shell程序设计培养学生认真负责的学习态度培养学生逻辑思维能力和方案设计能力培养学生分析问题解决问题的能力学习目标任务1:理解Shell脚本的概念

一、shell脚本的定义: 用shell编写的批处理文件称为shell脚本,它包含若干条命令和语句,可以解释执行。Shell脚本文件的扩展名一般为.sh。

二、shell脚本基本元素:

Shell脚本是以行为单位的,在执行脚本的时候会分解成一行一行依次执行。脚本中所包含的成分主要有注释、命令、Shell变量和结构控制语句。其中:脚本第一行总是以#!/bin/sh开始,这段脚本通知shell使用系统上的Bourneshell解释器。项目实施项目实施注释。用于对脚本进行解释和说明,在注释行的前面要加上符号“#”,这样在执行脚本的时候Shell就不会对该行进行解释。在第二行注释中写入脚本名是一个好习惯。命令。在Shell脚本中可以出现任何在交互方式下可以使用的命令变量。Shell支持具有字符串值的变量。Shell变量不需要专门的说明语句,通过赋值语句完成变量说明并予以赋值。在命令行或Shell脚本文件中使用$name的形式引用变量name的值。流程控制。主要为一些用于流程控制的内部命令。用于对命令的执行流程进行控制(如分支结构和循环结构)。项目实施三、脚本的建立与执行

1、脚本的建立:用户可以使用任何文本编辑器编辑Shell脚本文件,如Vi、gedit等。

2、脚本执行:Shell脚本有3种执行方式:

(1)bash脚本文件名项目实施 (2)source脚本文件名 (3)先为脚本添加可执行权

chmod

u+x

脚本文件 然后执行脚本

./脚本文件名项目实施任务2:认识Shell中的变量一、变量的概念

1、变量可以定制用户本身的工作环境。使用变量可以保存有用信息,使系统获知用户相关设置。变量也用于保存暂时信息。

2、在Shell中有三种变量:系统变量,环境变量,用户变量。其中系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置,用户变量在编程过程中使用最多。

3、引用变量一般采用“$variable”的形式引用变量variable的值。

项目实施二、系统变量:用于提供系统信息。系统变量一般采用命令行参数获取。表4-1常见的系统变量变量名说明$#不包括命令在内的命令行参数的数目$*命令行所有参数组成的字符串$@命令行所有参数组成的字符串$nn为数字,$0表示命令名称,$1表示命令第一个参数,以此类推$?上一个命令的返回值,如果正常退出则返回0,反之为非0值$$当前进程的进程号PID$!后台运行的最后一个进程的进程号PID项目实施示例:

利用$?,返回上一个命令的执行结果,测试文件拷贝是否成功。三、环境变量:与系统工作环境有关的变量。显示环境变量用echo命令。在bash中,设置环境变量用set命令。用unset命令可将环境变量重新设置为系统默认值。用户并不需要每次登录后都对各种环境变量进行手工设置,通过环境设置文件,用户的工作环境的设置可以在登录的时候由系统自动来完成。环境设置文件有两种:系统环境设置文件和用户环境设置文件。项目实施项目实施表4-2Shell中的环境变量变量名说明变量名说明HOME当前用户的主目录PWD用户的当前目录PATH命令搜索路径UID当前用户标识符LOGNAME用户登录名TERM终端的类型PS1第一命令提示符,是#或$SHELL用户的Shell类型及路径PS2第二命令提示符,默认是>HISFILE存储历史命令的文件项目实施四、用户变量 1、定义用户变量的语法为:

name=string2、变量名是以字母或下划线开头的字母、数字和下划 线字符序列。3、在Shell中,变量的赋值有下列句法格式: name=string name是变量名,string是变量值,“=”是赋值符号。

4、在定义变量时,若string中包含空格、制表符和换 行符,则string必须用’string’或者”sting”的形式, 即用单(双)引号将其括起来。双引号内允许变量 替换,而单引号内则不可以。

项目实施示例:根据用户的输入决定是否要卸载USB设备。项目实施任务3:掌握Shell表达式的使用一、expr命令

1、expr命令的功能是求表达式的值。

2、反引号:用于设置系统命令的输出到变量。Shell将反引号中的内容作为一个系统命令,并执行其内容。二、算术表达式

1、算术表达式可以是由运算符+、-、*、/、=组成的表达式。

2、算术表达式的语法格式:$((expression))项目实施表4-3expression参数的运算符运算符说明expression1\|expression2若expression1不是空或0,就返回expression1的值,否则返回expression2的值expression1\&expression2若两个表达式都不是空值或0,就返回expression1的值,否则返回0Expression1{=,\>,\>=,\<,\<=,!=}expression2两个表达式比较的结果,结果为真,返回1;结果为假,返回0Expression1{+,-}expression2两个表达式进行加或减运算Expression1{\*,/,%}expression2两个表达式进行乘、除或取余运算Expression1:expression2将expression1运算得到的客串与expression2运算结果的正则表达式模式进行比较,返回匹配的字符个数项目实施三、关系与逻辑表达式

1、命令test与方括号[]都用于进行条件测试,测试的结果返回逻辑值,即真true(0)和假false(1)。test和[]可以相互替换。

2、语法格式:

testexpression

或:[expression] 3、命令的结构存储在系统变量$?中。

4、数值测试项目实施表4-4常用的数值测试运算符运算符说明-eq如果int1=int2,则为真-ne如果int1!=int2,则为真-gt如果int1>int2,则为真-ge如果int1>=int2,则为真-lt如果int1<int2,则为真-le如果int1<=int2,则为真示例:数值测试项目实施5、字符串测试表4-5常用的字符串测试运算符运算符说明=如果字符串str1和str2相同,则为真!=如果字符串str1和str2不同,则为真-z如果字符串str的长度为0,则为真-n如果字符串str的长度不为0,则为真项目实施示例:测试字符串的值,根据用户的输入决定是否要加载USB设备。项目实施6、文件测试表4-6常用的文件测试运算符运算符说明-e如果文件filename存在,则为真-r如果文件filename存在且可读,则为真-w如果文件filename存在且可写,则为真-x如果文件filename存在且可执行,则为真-s如果文件filename存在且长度大于0,则为真-d如果文件filename存在且为目录,则为真-f如果文件filename存在且为普通文件,则为真-b如果文件filename存在且为特殊块文件,则为真-L如果文件filename存在且为符号链接文件,则为真-O如果文件filename存在且属于当前用户文件,则为真-G如果文件filename存在且属于当前组文件,则为真-nt测试两个文件的新旧,前一个文件比后一个新,则为真-ot测试两个文件的新旧,前一个文件比后一个旧,则为真项目实施示例:测试目录是否存在。如果目录不存在,则创建目录。项目实施7、逻辑运算表4-7逻辑运算符运算符说明!非运算,对逻辑值取反-a与运算,两个逻辑值为真返回值才为真,否则为假-o或运算,两个逻辑值有一个为真,返回值就为真示例:逻辑运算项目实施任务4:掌握Shell分支结构一、if语句1、if语句根据表达式的值来决定要执行的程序段落。2、其语法格式:示例:if分支语句项目实施二、case语句1、case语句为用户提供了根据字符串或变量的值从多个选项中选择一项执行的方法。2、case语句的语法格式:

项目实施示例:根据用户选择文件拷贝的方向。项目实施示例:根据用户选择文件拷贝的方向。项目实施任务5:掌握Shell循环结构

一、for循环1、for循环对一个变量所有可能的值都执行一个命令序列。2、其语法格式:3、for语句对[in列表]中的每一项都执行一次。4、列表可以是包括几个单词并且有空格分隔开的变量,也可以是直接输入的几个值。项目实施5、[in列表]子句也可以使用通配符。6、[in列表]子句可以省略,此时,假定循环变量包含执行Shell程序时命令行的所有位置参数,即相当于[in“$@”]。二、while循环和until循环1、while语句会在测试条件为真时循环才执行;until语句中当表达式的值为假时,循环才会继续执行命令。2、其语法格式分别为:项目实施3、break和continuebreak和continue为无条件转移语句。这两个命令只有放在do和done之间才有效。break用于立即终止当前循环的执行。Continue用于不执行循环中后面的语句而开始下一次循环的执行。项目实施示例:询问用户是否需要拷贝其它文件。项目实施示例:询问用户是否需要拷贝其它文件。项目总结总结

前面学习了Shell脚本的概念、变量、表达式和流程控制结构,通过学习我们可以顺利完成本课程的项目。具体实施方法如下:1、在gedit文本编辑器2、在文本编辑器中进行代码的编辑,部分主要代码如下图所示3、将代码保存成autousb.sh。4、使用chmod+xautousb.sh命令增加执行权限5、运行程序进行测试。项目总结本项目示例代码(一)项目总结本项目示例代码(二)项目实践【企业环境】

**企业工作环境中,普遍采用RHEL5操作系统。系统中有连接到公司局域网的100台计算机,你作为系统的管理员,工作任务之一便是监测网络的连通状态,然后根据网络的状态做出响应,以保证网络的正常连接。为了方便管理现编写一段脚本来测试网络的连通状态。【企业需求】根据企业需求,程序应实现的功能如下:运行程序时,提示用户输入“Y”或“N”,确定是否要开始测试。如果用户输入“Y”,则开始测试。备份并清空down.txt文件文件。项目实践用ping命令对网中地址为192.168.1.1~192.168.1.100的100台计算机进行测试。若ping命令成功,则不做处理。若ping命令失败,则把连接失败的计算机地址备份到文件down.txt文件中,以备进一步处理。完成测试后显示down.txt文件的内容。【操作环境】

Vmware中启动Linux系统,在文本编辑器gedit中进行脚本

温馨提示

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

评论

0/150

提交评论