linuxshell程序设计课件

上传人:磨石 文档编号:240738213 上传时间:2024-05-04 格式:PPT 页数:36 大小:86.50KB
返回 下载 相关 举报
linuxshell程序设计课件_第1页
第1页 / 共36页
linuxshell程序设计课件_第2页
第2页 / 共36页
linuxshell程序设计课件_第3页
第3页 / 共36页
点击查看更多>>
资源描述
第第7章章 shell程序设计程序设计 o把命令有机地组合在一起,形成功能强大、使用灵活,但代码简单的新命令,极大地提高了用户管理使用Unix/Linux系统的工作效率。o其它shell与Bash版本的shell也十分类似,读者可以举一反三,根据需要自学其他的shell。linuxshell程序设计shell脚本的建立与执行 oshell脚本的建立脚本的建立 n同建立普通文本文件的方式相同,可利用编辑器vi或cat命令,进行程序录入和编辑加工。oshell脚本的执行脚本的执行 nsh 脚本名脚本名 nsh 脚本名脚本名n改执行权限后直接执行方式改执行权限后直接执行方式 linuxshell程序设计shell的变量 可写的可写的shell环境变量环境变量 o可写的shell环境变量可以对它们进行赋值,大部分可写的shell环境变量都在登录过程中执行“/etc/profile”文件时进行初始化。该文件由系统管理员设置,用于为系统上的所有用户建立一个公共环境。o例:HOME MAIL PATH PS1 TERMlinuxshell程序设计特殊的环境变量 o$*所有命令行参数的值o$#命令行参数的总数o$当前进程的进程ID(PID)o$?最后执行的一条命令的退出状态,返回值为0则成功,非0则失败o$!在后台运行的最后一个进程的进程IDlinuxshell程序设计位置参数 o在命令行传递给shell脚本的参数。o共有十个位置参数,依次是n$O,$1,$2,$9n必有$0;而其他位置参数依据实际需求,可有可无。o输出位置参数 n可以用echo命令输出位置参数 linuxshell程序设计位置参数o用set命令给位置参数赋值 o移动位置参数 n如果实际给定的命令行参数多于9个,就需要用shift命令移动位置参数。nshift命令可以带有一个整数作为参数,例如:nshift 3n其功能是每次把位置参数左移3位。如果未带参数,则默认值为l。linuxshell程序设计用户自定义变量用户自定义变量 o在shell 编程语言中无须声明和初始化shell变量,一个未初始化的shell变量,其默认的初始化值为空字符串。o用户定义的shell变量名是由字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同。这与C语言中标识符的定义相同。linuxshell程序设计定义变量并赋值的形式 o字符串赋值,格式如下:n变量名变量名=字符串字符串o如果在赋给变量的值中要含有空格、制表符或换行符,那么就应该用双引号把这个字符串括起来。o变量值可以作为某个长字符串中的一部分。如果它在长字符串的末尾,就可以利用直接引用形式。linuxshell程序设计查看变量使用变量o用env命令可以查看环境变量o用不带参数的set命令可以显示所有“shell变量(包括用户自定义变量)名以及它们的当前值。set命令还可用于改变一些只读shell环境变量的值。o在程序中使用变量值时,要在变量名前面加上一个符号“$”。这个符号告诉shell,要取出其后变量的值。linuxshell程序设计7.3 shell中的特殊字符中的特殊字符 o特殊字符有着重要的作用。包括:n通配符通配符n引号引号 n命令执行顺序操作符命令执行顺序操作符n注释符、反斜线及后台操作符注释符、反斜线及后台操作符 o在使用时应注意它们表示的意义和作用范围。linuxshell程序设计shell的通配符的通配符o星号(星号(*)o问号(问号(?)o 一对方括号(一对方括号()o感叹号(感叹号(!)linuxshell程序设计shell的引号的引号 o双引号(双引号(“”)o单引号(单引号()o倒引号(倒引号()o 倒引号的嵌套应用,倒引号的嵌套时必须在内层的一组倒引号用反斜线()进行转义。linuxshell程序设计命令执行顺序操作符命令执行顺序操作符 o顺序执行顺序执行 n顺序分隔符(;)n管道线(|)o逻辑与(逻辑与(&)o逻辑或(逻辑或(|)linuxshell程序设计shell中的注释符、反斜线及后台操作符中的注释符、反斜线及后台操作符 o注释符(注释符(#)o反斜线(反斜线()n转义符,它能把特殊字符变成普通字符。n还作为续行符使用。如果把它放在一行的回车换行之前那么表示下一行接续此行,与下一行被视为同一行,可用于表示长的输入行。o后台操作符(后台操作符(&)linuxshell程序设计7.4 shell编程中的输入输出命令编程中的输入输出命令 oshell中输入输出的标准文件中输入输出的标准文件 o每个进程运行时自动打开三个文件,这些文件称为命令的标准文件,分别用于命令读取输入、输出结果以及输出错误消息,即n标准输入文件(stdin)n标准输出文件(stdout)n标准错误输出文件(stderr)oshell的输入输出重定向命令的输入输出重定向命令 o 2 linuxshell程序设计shell的输入输出命令的输入输出命令 oread命令命令 n用read命令由标准输入读取数据,然后赋给指定的变量。其一般格式如下。nread 变量变量1 变量变量2 oecho 命令命令 necho命令是将其后的参数输出。最好用双引号把所有参数括起来,这样不仅易读并且能使shell对它们进行正确的解释。linuxshell程序设计7.5 shell程序控制结构语句程序控制结构语句 o脚本的控制结构语句有三种基本的类型:两路分支、多路分支以及一个或多个命令的循环执行。Linux的bash中的两路分支语句是if语句,多路分支语句是if-elif和case语句;代码的循环执行语句是for、while和until语句。linuxshell程序设计if语句语句 o两路分支的两路分支的if语句语句 格式:nif 判断条件判断条件nthen 命令命令1nelse 命令命令2nFio判断条件包括命令语句和测试语句两种方式:判断条件包括命令语句和测试语句两种方式:o命令语句形式的判断条件命令语句形式的判断条件linuxshell程序设计多路条件判断分支的多路条件判断分支的if语句语句 o格式为:nif 判断条件判断条件1nthen 命令命令1nelif 判断条件判断条件2nthen 命令命令2nnelse 命令命令nnFio其中其中elif是是else if的缩写的缩写 linuxshell程序设计测试语句测试语句 o有两种格式,一种是使用关键字test,而另一种是使用方括号。格式如下:ntest expressionn expression o二者是等效的。同时要注意几点二者是等效的。同时要注意几点 o用于三种形式的测试:文件测试、字符串测试和数值测试 linuxshell程序设计文件测试参数功能-r file 若文件存在并且是用户可读的,则测试条件为真-w file若文件存在并且是用户可写的,则测试条件为真-x file若文件存在并且是用户可执行的,则测试条件为真 -f file若文件存在并且是普通文件,则测试条件为真-d file若文件存在并且是目录文件,则测试条件为真-p file若文件存在并且是FIFO文件,则测试条件为真 -s file若文件存在并且不是空文件,则测试条件为真linuxshell程序设计字符串测试字符串测试 参数功能str如果字符串str不是空字符串,则测试条件为真 str1=str2如果strl等于str 2,则测试条件为真(注意,“=”前后须有空格)str1!=str2如果str1不等于str2,则测试条件为真-n str如果字符串str的长度不为0,则测试条件为真-z str如果字符串str的长度为O,则测试条件为真linuxshell程序设计数值测试数值测试 参数功能n1 eq n2如果整数n1等于n2(n1=n2),则测试条件为真n1 ne n2如果整数nl不等于n2(n1 n2),则测试条件为真n1 lt n2如果n1小于n2(n1 n2),则测试条件为真n1 le n2如果n1小于等于n2(n1 n2),则测试条件为真n1 ge n2如果nl大于等于n2(n1=n2),则测试条件为真linuxshell程序设计用逻辑操作符进行组合的测试语句用逻辑操作符进行组合的测试语句 参数功能!逻辑非,放在任意逻辑表达式之前,原来真的表达式变为假,原来假的变为真-a逻辑与,放在两个逻辑表达式之间,仅当两个逻辑表达式都为真时,结果才为真-o逻辑或,放在两个逻辑表达式之间,其中只要有一个逻辑表达式为真时,结果就为真()圆括号,用于将表达式分组,优先得到结果。括号前后应有空格并用转义符“(”和“)”linuxshell程序设计用逻辑操作符进行组合的测试语句实例 o!$s1-le 0 o!test$s1-le 0o-f$s1 a w$s1 otest f$s1-a w$s1o$s1 gt 0 o$s2 lt 10 otest$s1 gt 0 o$s2 lt 10o($a gt 0 a$a lt 10)a$a ne 5 otest($a gt 0 a$a lt 10)a$a ne 5linuxshell程序设计case语句语句 o对同一变量进行多次的测试,比elif语句更简单、简洁ncase string1 innstr1)n commands-list1;nstr2)n commands-list2;n.nstrn)n commands-listn;nesaclinuxshell程序设计使用case语句时应注意以下几点 o(1)每个正则表达式后面可有一条或多条命令,其最后一条命令必须以两个分号(;)结束。o(2)正则表达式中可以使用通配符。o(3)如果一个正则表达式是由多个模式组成,那么各模式之间应以竖线“|”隔开。表示各模式是“或”关系,即只要给定字符串与其中一个模式相配,就会执行其后的命令表。linuxshell程序设计使用case语句时应注意以下几点o(4)各正则表达式是唯一的,不应重复出现。o(5)case语句以关键字case开头,以关键字esac结束。o(6)case的退出(返回)值是整个结构中最后执行的那个命令的退出值。若没有执行任何命令,则退出值为零。linuxshell程序设计for语句语句 o格式:nfor variable in argument-listndon command-listnDoneo其中的其中的in argument-list部分为可选项,部分为可选项,由于它的不同又可有三种形式。由于它的不同又可有三种形式。linuxshell程序设计in argument-list部分三种形式 oargument-list为变量值表 n变量variable依次取值表中各字符串 oargument-list为文件的表达式 n变量的值依次取当前目录(或指定目录)下与文件表达式相匹配的文件名,每取值一次,就进入循环体执行命令表,直到所有匹配的文件名取完为止。oargument-list为空nargument-list也可以用$*来代替,变量依次取位置参数的值,然后执行循环体中的命令表,直至所有位置参数取完为止。linuxshell程序设计while语句语句 o格式为:nwhile expressionndon command-listnDoneo作用:只要expression的值为真,则进入循环体,执行command-1ist中的命令,然后再做条件测试,直到测试条件为假时才终止while语句的行。linuxshell程序设计until语句语句 o格式为:nuntil expressionndon command-listndoneo作用:只要expression的值为假,就执行commandlists的命令。linuxshell程序设计 break和和continue语句语句 obreak命令可以从循环体中退出来。格式为:nbreak nocontinue命令跳过循环体中在它之后的语句,回到本层循环的开头,进行下一次循环。格式为:ncontinue nlinuxshell程序设计算术表达式算术表达式o五种基本的算术运算:+(加)、-(减)、*(乘)、(除)和(取模)。shell只提供整数的运算。格式如下:oexpr n1运算符运算符n2 o例:oexpr 15*15o注意:在运算符的前后都留有空格,否则expr不对表达式进行计算,而直接输出它们。linuxshell程序设计自定义函数自定义函数 o在shell脚本中可以定义并使用函数。其定义格式为:oFunction()oo command-listoo函数应先定义,后使用。调用函数时,直接利用函数名调用。linuxshell程序设计END OF CHAPTER 7linuxshell程序设计
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!