




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7讲 Shell程序设计Shell的含义Shell 既是一种命令语言,又是一种程序设计语言作为命令语言,它交互式地解释和执行用户输入的命令作为程序设计语言,它定义了各种变量和参数,并提供了在高级语言中才有的控制结构,如循环和分支。目前流行的Shellash:Linux中占用资源最少的一个小一个小Shell,它只,它只包含包含24个内部命令个内部命令bash: Linux系统默认的Shell,包含,包含40个内部命个内部命令,基于令,基于GNU 架构发展而来。ksh:与商业发行版的ksh兼容,包含,包含42个内部命个内部命令,令,由 AT&T Bell lab. 发展而来,兼容于 bash c
2、sh:是 Linux比较大的内核,共包含,共包含52个内部命个内部命令,令,Bill Joy 设计依附亍 BSD 版zsh:是 Linux最大的Shell之一,共包含之一,共包含84个内部个内部命令,若没有特殊用途,没有必要安装。命令,若没有特殊用途,没有必要安装。Bash的功能命令记忆能力,可多达上千个,上次登录执行过的命令记在/.bash_history ,本次在内存命令补全功能,按Tab键shell scripts通配符:*,?Shell基本语法输入输出重定向l“” 输出重定向到一个文件l“” 输出追加到一个文件l“ 输出重定向操作符输出重定向操作符 输出重定向操作符输出重定向操作符添加
3、到文件添加到文件 跟在输入结束自符串后(跟在输入结束自符串后(HERE)操作符)操作符 .filmname 执行执行(“源源”)filename文件文件 空格空格 在两个字之间的间隔符在两个字之间的间隔符通配符通配符字符字符 说明说明 ? 匹配一个字符匹配一个字符 * 匹配一个或几个字符匹配一个或几个字符 列出字符的范围,列出字符的范围,例如 abcd a-z 意指意指a到到z的全部字符的全部字符 a,z 意指意指a或或z字符字符特殊字符特殊字符反斜杠反斜杠 在某个字符前利用反斜杠可以在某个字符前利用反斜杠可以阻止阻止shell把后面的字符解释为特把后面的字符解释为特殊字符。殊字符。例如,把例
4、如,把$test的值赋给变量的值赋给变量var。输入如下命令:。输入如下命令: var =$test 如下命令才把如下命令才把$test存放在存放在var中:中: var=$test 见例子见例子./my111反引号反引号: 通知通知shell 执行执行由反引号定义的字符串。由反引号定义的字符串。 wc当需要把执行命令的结果存放在变量中时,就可以在当需要把执行命令的结果存放在变量中时,就可以在shell程序中利用反引号。例如,要统计当前目录下一个文件程序中利用反引号。例如,要统计当前目录下一个文件中中test.txt有几行并把结果存在叫做有几行并把结果存在叫做var的变量中:的变量中: var
5、=wc -l test.txt pdksh和和bash环境环境见例子见例子./my1111分支语句分支语句ifif 语句语句 if语句通过判断逻辑表达式来作出选择,在语句通过判断逻辑表达式来作出选择,在pdksh和和bash中的条件语句有如下的格式:中的条件语句有如下的格式:if expression ; then statementselif expression ; then statementselse statementsfiif条件是可以嵌套的,条件是可以嵌套的, 位置参数及位置参数及if语句语句 下述是一个下述是一个shell程序的程序的my3,只带了一个参数(名字),并在屏只带了
6、一个参数(名字),并在屏幕上显示这个名字:幕上显示这个名字: #Name display program if $# -eq 0 ;then echo “Name not provided” else echo”Your name is ” $1 fi 在在bash中,如果执行中,如果执行mypgm1如下:如下: #./my3 将得到输出:将得到输出: Name not provided 但是,如果执行但是,如果执行mypgm1如下:如下: #. /my3 wang 则得到如下的输出:则得到如下的输出: Your name is wang 位置参数位置参数 如果把程序如果把程序my4修改为:修
7、改为: #Name display program if $# -eq 0 ;then echo “Name not provided” else echo”Your name is $2” fi 在在bash中,如果执行中,如果执行mypgm1如下:如下: #./my4 将得到输出:将得到输出: Name not provided 但是,如果执行但是,如果执行mypgm1如下:如下: #. /my4 wang zhang 则得到如下的输出:则得到如下的输出: Your name is zhang mypgm1还说明了还说明了shell编程的另一个方面,即编程的另一个方面,即内部变量内部变量。
8、在。在mypgm1中的变量中的变量$#是内部变量,并提供传给是内部变量,并提供传给shell程序的位置参数程序的位置参数的数目。的数目。设计一个Shell程序,读入一个正整数,如果是奇数显示“odd”,如果是偶数显示“even” 。 read x let y=$x/2*2 if $y eq $x ;then echo “even” else echo “odd” fi见例子见例子./if 测试文件f1是否存在,若存在删除它,不存在建立文件f1测试目录/root/u1是否存在,若存在删除它,不存在建立它Shell 程序设计流程控制程序设计流程控制bash表达式的比较表达式的比较1.字符串比较字符
9、串比较 = 比较两个字符串是否相等比较两个字符串是否相等 != 比较两个字符串是否不相等比较两个字符串是否不相等 -n 判断字符长度是否大于零判断字符长度是否大于零 -z 判断字符长度是否等于零判断字符长度是否等于零bash表达式的比较表达式的比较2数字比较数字比较 -eq 比较两个数是否相等比较两个数是否相等 - ge 比较一个数是否大于或是等于另一个数比较一个数是否大于或是等于另一个数 -le 比较一个数是否小于或是等于另一个数比较一个数是否小于或是等于另一个数 -ne 比较两个数是否不等比较两个数是否不等 -gt 比较一个数是否大于另一个数比较一个数是否大于另一个数 -lt 比较一个数是
10、否小于另一个数比较一个数是否小于另一个数bash表达式的比较表达式的比较3文件操作符文件操作符 -d 确定文件是否为目录确定文件是否为目录 -f 确定文件是否为普通文件确定文件是否为普通文件 -r 确定是否对文件设置了读许可。确定是否对文件设置了读许可。 -s 确定文件名是否具有大于零的长度确定文件名是否具有大于零的长度 -w 确定文件是否设置了写许可确定文件是否设置了写许可 -x 确定文件是否设置了执行许可确定文件是否设置了执行许可bash表达式的比较表达式的比较4.逻辑操作符逻辑操作符 逻辑操作符用来根据逻辑规则比较表达式。逻辑操作符用来根据逻辑规则比较表达式。 !,-a,-o字符表示字符
11、表示NOT 、AND和和OR ! 求反(求反(”非非”)逻辑表达式)逻辑表达式 -a 逻辑逻辑AND(”与与 ”)两个逻辑表达式)两个逻辑表达式 -o 逻辑逻辑OR(”或或 ”)两个逻辑表达式)两个逻辑表达式 循环语句循环语句for语句语句第一种格式如下:第一种格式如下: for curvar in list do statements done 对对list中的每个值需中的每个值需要执行一次要执行一次statements时应利用时应利用这种格式。对每次这种格式。对每次循环,把循环,把list中的当中的当前值赋给变量前值赋给变量curvar, list可以使可以使含有几个项的变量,含有几个项的
12、变量,或是用空格分隔的或是用空格分隔的值表。值表。For语句的这语句的这种格式是由种格式是由pdksh和和bash使用的。使用的。循环语句循环语句1.for语句语句 假设需要把目录中的每个文件在一个叫假设需要把目录中的每个文件在一个叫做做backup的子目录中建立备份,可以在的子目录中建立备份,可以在bash 中中执行如下的程序:执行如下的程序: mkdir backup for file in *.txt do cp $file backup/$file done 执行后把当前目录下的.c为后缀的文件拷贝到子目录backup下见例子见例子./my5求前求前5个自然数之和见例子个自然数之和见例
13、子./my6 循环语句循环语句while语句语句格式如下:格式如下: while expression do statements done 循环语句循环语句前前5个自然数之和个自然数之和 count=0 i=1 while $i le 5 do count=expr $count + $i i=expr $i + 1 done echo $count 见例子见例子./my7前前5个个 偶数数之和见例子偶数数之和见例子./my8例子:设计一个shell程序,添加一个新组为class,然后添加属于这个组的5个用户,用户名的形式为stuxx,其中xx从01到05#!/bin/bashgroupadd classi=1while $i -le 5 dostr=stu0$i let i=$i+1useradd g class $strdone见例子见例子./adduser1, ./adduser2, ./adduser3如果添加20个用户,程序如何改? ./adduser20循环语句for (i=1;i=9;i+)do donewhile (i5)dodone设计一个Shell程序,输出全班同学的学号。假如全班同学的学号为20120122502012012281,当遇到自己的学号时输出“This is my n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告行业居间合同
- 法院免还协议书
- 转让全闲置合同协议
- 水源保洁协议书
- 车主债权转让合同协议
- 车库地坪漆合同协议
- 车位转租协议书范本
- 产品居间合同协议书
- 运输公司合作协议合同
- 运动设备租借协议书范本
- 110~750kV架空输电线路设计规范方案
- 北师大版五年级数学下册公开课《包装的学问》课件
- 车辆采购、维修服务投标方案
- 药剂科病房麻醉药品精神药品处方流程
- 北师大版英语八年级下册 Unit 4 Lesson 11 Online Time 课件(30张PPT)
- 浅析商业综合体的消防疏散
- 红金大气国际护士节表彰大会PPT模板
- 贝多芬F大调浪漫曲—小提琴谱(带钢伴谱)
- 外架悬挑防护棚施工方案完整
- 以天然气制合成气的工艺
- CDR-临床痴呆评定量表
评论
0/150
提交评论