[计算机软件及应用]第7章shell程序设计20121126修改

上传人:tia****nde 文档编号:70534685 上传时间:2019-01-17 格式:PPT 页数:36 大小:340.56KB
返回 下载 相关 举报
[计算机软件及应用]第7章shell程序设计20121126修改_第1页
第1页 / 共36页
[计算机软件及应用]第7章shell程序设计20121126修改_第2页
第2页 / 共36页
[计算机软件及应用]第7章shell程序设计20121126修改_第3页
第3页 / 共36页
[计算机软件及应用]第7章shell程序设计20121126修改_第4页
第4页 / 共36页
[计算机软件及应用]第7章shell程序设计20121126修改_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《[计算机软件及应用]第7章shell程序设计20121126修改》由会员分享,可在线阅读,更多相关《[计算机软件及应用]第7章shell程序设计20121126修改(36页珍藏版)》请在金锄头文库上搜索。

1、2019/1/17,河南机电高专计科系,第7章 shell程序设计,把命令有机地组合在一起,形成功能强大、使用灵活,但代码简单的新命令,极大地提高了用户管理使用Unix/Linux系统的工作效率。 其它shell与Bash版本的shell也十分类似,读者可以举一反三,根据需要自学其他的shell 。,2019/1/17,河南机电高专计科系,shell脚本的建立与执行,shell脚本的建立 同建立普通文本文件的方式相同,可利用编辑器vi或cat命令,进行程序录入和编辑加工。 shell脚本的执行 sh 脚本名 sh 脚本名 改执行权限后直接执行方式,2019/1/17,河南机电高专计科系,she

2、ll的变量 可写的shell环境变量,可写的shell环境变量可以对它们进行赋值,大部分可写的shell环境变量都在登录过程中执行“/etc/profile”文件时进行初始化。该文件由系统管理员设置,用于为系统上的所有用户建立一个公共环境。 例:HOME MAIL PATH PS1 TERM,2019/1/17,河南机电高专计科系,特殊的环境变量,$*所有命令行参数的值 $#命令行参数的总数 $当前进程的进程ID(PID) $?最后执行的一条命令的退出状态,返回值为0则成功,非0则失败 $!在后台运行的最后一个进程的进程ID,2019/1/17,河南机电高专计科系,位置参数,在命令行传递给sh

3、ell脚本的参数。 共有十个位置参数,依次是 $O,$1,$2,$9 必有$0;而其他位置参数依据实际需求,可有可无。 输出位置参数 可以用echo命令输出位置参数,2019/1/17,河南机电高专计科系,位置参数,用set命令给位置参数赋值 移动位置参数 如果实际给定的命令行参数多于9个,就需要用shift命令移动位置参数。 shift命令可以带有一个整数作为参数,例如: shift 3 其功能是每次把位置参数左移3位。如果未带参数,则默认值为l。,2019/1/17,河南机电高专计科系,用户自定义变量,在shell 编程语言中无须声明和初始化shell变量,一个未初始化的shell变量,其

4、默认的初始化值为空字符串。 用户定义的shell变量名是由字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同。这与C语言中标识符的定义相同。,2019/1/17,河南机电高专计科系,定义变量并赋值的形式,字符串赋值,格式如下: 变量名=字符串 如果在赋给变量的值中要含有空格、制表符或换行符,那么就应该用双引号把这个字符串括起来。 变量值可以作为某个长字符串中的一部分。如果它在长字符串的末尾,就可以利用直接引用形式。,2019/1/17,河南机电高专计科系,查看变量使用变量,用env命令可以查看环境变量 用不带参数的set命令可以显示所有“shell变量(包括用户自定义变量)名以及

5、它们的当前值。set命令还可用于改变一些只读shell环境变量的值。 在程序中使用变量值时,要在变量名前面加上一个符号“$”。这个符号告诉shell,要取出其后变量的值。,2019/1/17,河南机电高专计科系,7.3 shell中的特殊字符,特殊字符有着重要的作用。包括: 通配符 引号 命令执行顺序操作符 注释符、反斜线及后台操作符 在使用时应注意它们表示的意义和作用范围。,2019/1/17,河南机电高专计科系,shell的通配符,星号(*) 问号(?) 一对方括号( ) 感叹号(!),2019/1/17,河南机电高专计科系,shell的引号,双引号(“”) 单引号() 倒引号() 倒引号

6、的嵌套应用,倒引号的嵌套时必须在内层的一组倒引号用反斜线()进行转义。,2019/1/17,河南机电高专计科系,命令执行顺序操作符,顺序执行 顺序分隔符(;) 管道线(|) 逻辑与(&) 逻辑或(|),2019/1/17,河南机电高专计科系,shell中的注释符、反斜线及后台操作符,注释符(#) 反斜线() 转义符,它能把特殊字符变成普通字符。 还作为续行符使用。如果把它放在一行的回车换行之前那么表示下一行接续此行,与下一行被视为同一行,可用于表示长的输入行。 后台操作符(&),2019/1/17,河南机电高专计科系,7.4 shell编程中的输入输出命令,shell中输入输出的标准文件 每个

7、进程运行时自动打开三个文件,这些文件称为命令的标准文件,分别用于命令读取输入、输出结果以及输出错误消息,即 标准输入文件(stdin) 标准输出文件(stdout) 标准错误输出文件(stderr) shell的输入输出重定向命令 2,2019/1/17,河南机电高专计科系,shell的输入输出命令,read命令 用read命令由标准输入读取数据,然后赋给指定的变量。其一般格式如下。 read 变量1 变量2 echo 命令 echo命令是将其后的参数输出。最好用双引号把所有参数括起来,这样不仅易读并且能使shell对它们进行正确的解释。,2019/1/17,河南机电高专计科系,7.5 she

8、ll程序控制结构语句,脚本的控制结构语句有三种基本的类型:两路分支、多路分支以及一个或多个命令的循环执行。Linux的bash中的两路分支语句是if语句,多路分支语句是if-elif和case语句;代码的循环执行语句是for、while和until语句。,2019/1/17,河南机电高专计科系,if语句,两路分支的if语句 格式: if 判断条件 then 命令1 else 命令2 Fi 判断条件包括命令语句和测试语句两种方式: 命令语句形式的判断条件,2019/1/17,河南机电高专计科系,多路条件判断分支的if语句,格式为: if 判断条件1 then 命令1 elif 判断条件2 the

9、n 命令2 else 命令n Fi 其中elif是else if的缩写,2019/1/17,河南机电高专计科系,测试语句,有两种格式,一种是使用关键字test,而另一种是使用方括号。格式如下: test expression expression 二者是等效的。同时要注意几点 用于三种形式的测试:文件测试、字符串测试和数值测试,2019/1/17,河南机电高专计科系,文件测试,2019/1/17,河南机电高专计科系,字符串测试,2019/1/17,河南机电高专计科系,数值测试,2019/1/17,河南机电高专计科系,用逻辑操作符进行组合的测试语句,2019/1/17,河南机电高专计科系,用逻辑

10、操作符进行组合的测试语句实例, ! “$s1“ -le 0 ! test “$s1“ -le 0 -f “$s1“ a w “$s1“ test f “$s1“ -a w “$s1“ “$s1“ gt 0 o “$s2“ lt 10 test “$s1“ gt 0 o “$s2“ lt 10 ( “$a“ gt 0 a “$a“ lt 10 ) a “$a“ ne 5 test ( “$a“ gt 0 a “$a“ lt 10 ) a “$a“ ne 5,2019/1/17,河南机电高专计科系,case语句,对同一变量进行多次的测试,比elif语句更简单、简洁 case string1 in

11、str1) commands-list1; str2) commands-list2; . strn) commands-listn; esac,2019/1/17,河南机电高专计科系,使用case语句时应注意以下几点,(1) 每个正则表达式后面可有一条或多条命令,其最后一条命令必须以两个分号(;)结束。 (2) 正则表达式中可以使用通配符。 (3) 如果一个正则表达式是由多个模式组成,那么各模式之间应以竖线“|”隔开。表示各模式是“或”关系,即只要给定字符串与其中一个模式相配,就会执行其后的命令表。,2019/1/17,河南机电高专计科系,使用case语句时应注意以下几点,(4) 各正则表达

12、式是唯一的,不应重复出现。 (5) case语句以关键字case开头,以关键字esac结束。 (6) case的退出(返回)值是整个结构中最后执行的那个命令的退出值。若没有执行任何命令,则退出值为零。,2019/1/17,河南机电高专计科系,for语句,格式: for variable in argument-list do command-list Done 其中的in argument-list部分为可选项,由于它的不同又可有三种形式。,2019/1/17,河南机电高专计科系,in argument-list部分三种形式,argument-list为变量值表 变量variable依次取值表

13、中各字符串 argument-list为文件的表达式 变量的值依次取当前目录(或指定目录)下与文件表达式相匹配的文件名,每取值一次,就进入循环体执行命令表,直到所有匹配的文件名取完为止。 argument-list为空 argument-list也可以用$*来代替,变量依次取位置参数的值,然后执行循环体中的命令表,直至所有位置参数取完为止。,2019/1/17,河南机电高专计科系,while语句,格式为: while expression do command-list Done 作用:只要expression的值为真,则进入循环体,执行command-1ist中的命令,然后再做条件测试,直到

14、测试条件为假时才终止while语句的行。,2019/1/17,河南机电高专计科系,until语句,格式为: until expression do command-list done 作用: 只要expression的值为假,就执行commandlists的命令。,2019/1/17,河南机电高专计科系,break和continue语句,break命令可以从循环体中退出来。格式为: break n continue命令跳过循环体中在它之后的语句,回到本层循环的开头,进行下一次循环。格式为: continue n,2019/1/17,河南机电高专计科系,算术表达式,五种基本的算术运算:+(加)、-(减)、*(乘)、(除)和(取模)。shell只提供整数的运算。格式如下: expr n1运算符n2 例: expr 15 * 15 注意:在运算符的前后都留有空格,否则expr不对表达式进行计算,而直接输出它们。,2019/1/17,河南机电高专计科系,自定义函数,在shell脚本中可以定义并使用函数。其定义格式为: Function( ) command-list 函数应先定义,后使用。调用函数时,直接利用函数名调用。,2019/1/17,河南机电高专计科系,END OF CHAPTER 7,

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

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

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