15shell编程.ppt_第1页
15shell编程.ppt_第2页
15shell编程.ppt_第3页
15shell编程.ppt_第4页
15shell编程.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

Linux下的shell编程 一 什么是shell shell既是一种程序设计语言 又是一种命令语言解释器 作为程序设计语言 它定义了各种变量和参数 并提供循环和分支等控制结构 输入命令 二 Shell命令的解释过程 名称描述位置shBourneshell bin shbashBourneAgainShell bin bashbash2BourneAgainShell的新版本 bin bash2cshCshell bin cshtcsh和csh兼容的shell bin tcshkshKornshell 针对网络操作 usr bin kshzsh一个和csh ksh和sh兼容的shell bin zsh 三 Shell的种类 四 bash的特点 1 历史记录 上下方向键调出已经使用过的命令行使用history命令 n 2 Tab键补全命令 匹配任意多个任意字符 匹配任意一个字符 可以例举 也可以做范围 四 bash的特点 4 重定向 输入重定向语法 示例 命令 输入文件 root pcroot cat inputfile 四 bash的特点 5 管道操作符语法示例 command1 command2 四 bash的特点 6 别名 命令别名是其他命令行的缩写 用来减少键盘输入 语法 alias别名 命令行 建立别名 unalias别名 取消别名 7 进程和作业控制ps top bg fg jobs at atq atrm 四 bash的特点 8 两级提示符PS1shell命令行的一级提示符默认提示为 root localhostroot PS1 u h W PS2shell命令行的二级提示符默认提示为 四 bash的特点 bash的特点 Tab键补全命令历史记录通配符重定向管道别名作业和进程控制两级提示符 五 创建shell脚本 使用字符界面创建shell脚本 使用图形界面创建shell脚本 六 执行shell脚本 root localhostroot 文件完整路径 root localhostroot 文件完整路径 root localhostroot bash文件完整路径注 不需要可执行权限 root localhostroot 程序名称注 既要可执行权限又要在搜索路径 PATH 中 注 文件需要增加可执行权限 变量名由下划线 字母 数字组成 大小写敏感 但变量名不能以数字开头 在shell编程中变量是非类型性质的 也就是不必指定变量是数字还是字符串等 不需要声明 七 变量 变量是用于临时保存数据的地方 每次运行时 变量可能包含不同的数值 可以随着程序的运行而改变其表示的值 定义变量 变量名 变量值sum expr2 3 4 引用变量 变量名 常用的环境变量 HOME用户的主目录PATH执行命令时所搜索的路径SHELL默认的ShellPS1shell命令行的一级提示符PS1 u h W PS2shell命令行的二级提示符 七 变量 变量类型 1 环境变量不能定义 可以修改2 内部变量不能定义 不能修改3 用户变量可以定义 可以修改 常用的内部变量 传给shell程序位置参数的个数 存储上一个执行命令的返回值 返回值为0代表为真 其他非0值均为假 0存储shell程序的名称 存储shell程序的所有参数 七 变量 例如 echo Numberofparametersis echo Programnameis 0echo Parametersasasinglestringis 常用的内部变量 shell程序位置参数当编写一个带有若干参数的shell脚本时 可以使用命令行或从其他的shell脚本调用它 这些选项是通过Linux作为位置参数来提供给shell程序的 位置参数有系统给出的专用名 存放在变量中的第一个参数名1 数字1 在程序内可以用 1来访问 存放在变量中的第二个参数名2 数字2 在程序内可以用 2来访问 依此类推 七 变量 八 特殊字符 1 双引号在系统中有些特殊字符 为避免引用这些特殊字符 往往用双引号将这些特殊字符引起来 使其不具有特殊含义 如 空格 但有一部分特殊字符在双引号中还是具有特殊含义 用双引号引起来是不起作用的 如 即双引号可以解析字符串内的所有变量 var teststring newvar valueofvaris var echo newvar执行上面的三行shell程序 可得到如下的结果 valueofvaris teststring 2 单引号为阻止shell解析变量 利用单引号括起的字符 全部按原字符处理 把前面的双引号改为单引号 执行程序的结果 valueofvaris var 八 特殊字符 八 特殊字符 3 反引号反引号的功能是命令替换 将反引号中的所有字符串当做命令来执行 例如 要统计当前目录下test txt文件中有几行并把结果存在叫做var的变量中 var wc ltest txt 4 反斜杠 又称为转义字符 是将特殊字符的特殊含义屏蔽掉 使其还原成原字符 例如 把 test的值赋给变量var 输入如下命令 var test存放在var中的值将是一个空值 如下命令才把 test存放在var中 var test 八 特殊字符 九 表达式的比较 测试方法 1 test表达式 testmy My 2 表达式 my My 注意 等号两边和 两边都有空格 九 表达式的比较 1 字符串比较 比较两个字符串是否相等 比较两个字符串是否不相等str如果str不为空 则为真 nstr如果str的长度大于零 则为真 zstr如果str的长度等于零 则为真 str1 abc str2 abd if str1 str2 thenecho str1isequaltostr2 elseecho str1isnotequaltostr2 fi 九 表达式的比较 九 表达式的比较 2 数字比较 eq比较两个数是否相等 ge比较一个数是否大于或是等于另一个数 le比较一个数是否大于或是等于另一个数 ne比较两个数是否不等 gt比较一个数是否大于另一个数 lt比较一个数是否小于另一个数 注意 每个字符串或运算符之间必需用空格隔开 num1 12num2 9if num1 eq num2 thenecho num1isequaltonum2 elseecho num1isnotequaltonum2 fi 九 表达式的比较 九 表达式的比较 3 文件操作符 d确定文件是否为目录 f确定文件是否为普通文件 r确定是否对文件设置了读许可 s确定文件名是否具有大于零的长度 w确定文件是否设置了写许可 x确定文件是否设置了执行许可 九 表达式的比较 if dfile1 thenecho file1isadirectory elseecho file1isnotadirectory fiif xfile1 thenecho file1hasexecutepemission elseecho file1doesnothaveexecutepemission fi 九 表达式的比较 4 逻辑操作符逻辑操作符用来根据逻辑规则比较表达式 a o字符表示NOT AND和OR 求反 非 逻辑表达式 a逻辑AND 与 两个逻辑表达式 o逻辑OR 或 两个逻辑表达式如 ffile1 a wfile1 8 8条件语句 1 if语句if语句通过判断逻辑表达式来作出选择 在bash中的条件语句有如下的格式 if expression thenstatementselif expression thenstatementselsestatementsfiif条件是可以嵌套的 8 8条件语句 2 case语句case语句是用来执行依赖于离散值或是匹配指定变量值的范围的语句 bash的case语句如下 casestrinstr1 str2 statements str3 str4 statements statements esac 8 7循环语句 1 for语句第一种格式如下 forcurvarinlistdostatementsdone第二种格式如下 forcurvardostatementsdone这种格式也可以写成如下 forcurvarin dostatesmentsdone 对list中的每个值需要执行一次statements时应利用这种格式 对每次循环 把list中的当前值赋给变量vcurvar List可以使含有几个项的变量 或是用空格分隔的值表 For语句的这种格式是由pdksh和bash使用的 在这种格式中 对传给shell 程序的每个位置参数执行一次statements 对每次循环 把位置参数的当前值赋给变量curvar记住 提供传给shell程序的一系列参数 全部参数排在一起 8 7循环语句 1 for语句假设需要把目录中的每个文件在一个叫做backup的子目录中建立备份 可以在pdksh和bash中执行如下的程序 forfilenamein ls docp filenamebackup filenameif ne0 thenecho copyfor filenamefailed fidone 8 7循环语句 2 while语句在pdksh和bash中 利用的如下的格式 whileexpressiondostatementsdone在tcsh中 利用如下的格式 while expression statementsEnd 8 7循环语句 2 while语句求前五个偶数的和 pdksh和bash的shell程序如下 bin bashloopcount 0result 0while loopcount lt5 doloopcount expr loopcount 1 increment expr loopcount 2 result result increment doneecho resultis result 8 7循环语句 3 until语句用来执行一系列命令直到所指定的条件为真才能终止在pdksh和bash中 利用如下的格式 untilexpressiondostatementsdonetcsh不支持until语句 8 7循环语句 4 repeat语句用来执行只有一个固定的次数的命令 如要在屏幕上显示连字符 100次 则利用如下的命令 repeat100echo 5select语句Select语句的格式如下 selectiteminitemlistdostatementsdoneitemlist是可选的 当未给出itemlist时 系统通过item中的项目一次重复一个 但当给出itemlist时 系统对itemlist中的每个项重复 对每次重复把itemlist的当前值赋给item 而后item可作为执行语句的一部分 如果编写一个提供用户挑选Continue或Finsh的选择菜单 则可编写如下的shell程序 bin bashselectiteminContinueFinshdoif item Finsh thenbreakfidone执行select命令时 系统向用户显示一个选择数字的菜单 在这种情况下 1表示Continue 2表示Finsh 当用户选择1时 变量item包含值Continue 而当用户选择2时 变量item包含值Finsh 当用户选择2时 即执行if语句 并终止循环 8 7循环语句 6 shift语句用来处理位置参数 并从左到右每次处理一个参数应该记得 位置参数是用 1 2 3等来标识的 shift命令的作用时 把每个位置参数向左移动一个位置 而当前的 1丢失 shift命令的格式如下 shiftnumber参数number是移动的数目 是可选的 当不特别指定number时 缺省值为1 即参数向左移动一个位置 当指定number时 则向左移动number个位置 8 9杂项语句 1 break语句用来终止重复执行的循环 这种循环可以是for until或repeat命令 2 exit语句用来退出shell程序 在exit之后可有选择地利用一个数字 如果当前的shell程序被另一个shell程序调用 那么这个调用程序检查代码 并做出相应的判断 8 10函数 函数是shell程序中执行特殊过程的部件 并在shell程序中可以重复调用 下面是在pdksh和bash中函数定义格式 func Statements 可以调用函数如下 funcparam1param2param3参数param1param2等是可以选择的 还能把参数作为单字符串来传送 例如 函数可以分析参数 就好像它们是传送给shell程序的位置参数 在传送月份数字后显示月份名或出错信息 Displaymonth case 1in01 1 echo MonthisJanuary 02 2 echo MonthisFebruary 03 3 echo MonthisMarch 04 4 echo MonthisApril 05 5 echo MonthisMay 06 6 echo MonthisJune 07 7 echo Mo

温馨提示

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

评论

0/150

提交评论