[计算机硬件及网络]Linux的shell编程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[计算机硬件及网络]Linux的shell编程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件及网络 计算机硬件 网络 Linux shell 编程 课件
- 资源描述:
-
1、第第5章章Linux的的shell编程编程 5.1什么是什么是shell 当一个用户登录当一个用户登录LinuxLinux系统之后,系统初始化系统之后,系统初始化程序程序initinit就为每一个用户运行一个称为就为每一个用户运行一个称为shell(shell(外壳外壳)的程序。的程序。shellshell就是一个命令行解释器。就是一个命令行解释器。一般的一般的LinuxLinux系统都将系统都将bashbash作为默认的作为默认的shellshell。5.2几种流行的几种流行的shell 目前流行的shell有ash、bash、ksh、csh、zsh等,bash是Linux系统默认使用的sh
2、ell。可以用下面的命令来查看shell的类型:#echo$SHELL SHELL是一个环境变量,它记录用户所使用的shell类型。几种流行的几种流行的shell(续)续)可以用命令:#shell-name 来转换到别的shell$exit 退出子shell。5.3 shell程序设计程序设计 使用shell编程类似于DOS中的批处理文件,称为shell script,又叫shell程序或shell命令文件或者shell脚本。Shell脚本程序是按行来解释的,脚本程序总是以#!/bin/sh 开始的,符号#!用来告诉系统它后面的参数是用来执行该文件的程序。如果要执行该脚本,还必须使其可执行。c
3、hmod+x filename 然后,您可以通过输入:./filename 来执行您的脚本。$cat firstscript.sh#!/bin/shecho“You are welcome to use base.”echo“Current work directory is$PWD.”echo“You are$LOGNAME.”增加执行权限$chmod+x firstscript.sh开始运行程序:$./firstscript.sh执行结果:You are welcome to use base.Current work directory is/rootYou are root.shell
4、只有字符型变量。shell变量无需初始化,一个没有初始化的shell变量自动被初始化为一个空串。shell变量名大小写敏感。5.4 shell基础编程基础编程5.4.1 shell变量变量Bourne Shell有如下四种变量:本地变量(用户自定义变量)位置变量即 shell script之参数 预定义变量(特殊变量)环境变量(参考shell定制部分)shell变量变量(续续)5.4.1.1本地变量本地变量(用户自定义变量用户自定义变量)本地变量在用户现在的shell生命期的脚本中使用。要设置一本地变量,格式为:$variable-name=value 或$variable-name=valu
5、e 因为大部分LINUX命令使用小写字符,因此在shell编程中变量通常全部大写。变量的引用:在变量前加$。(1)显示变量 使用echo命令输出单个变量的值,此时要在变量名前加$WEEK=Satur$echo Today is$WEEKday输出:Today is 使用花括号来告诉shell我们要显示的变量:$echo Today is$WEEKday输出:Today is Saturday(2)清除变量:使用unset命令删除变量的赋值$Z=hello$echo$Z hello$unset Z$echo$Z$(3)显示所有本地shell变量:使用set命令显示所有本地定义的shell变量(4
6、)结合变量值 Echo$variable-name1$variable-name2$A=Hello,$B=World$echo$A$BHello,World(5)设置变量的默认值 Bourne Shell允许对变量设置默认值,其格式如下:$variable:-defaultvalue$color=blue$echo The sky is$color:-grey today输出结果:The sky is blue today$color=blue$unset color$echo The sky is$color:-grey todayThe sky is grey today$echo$col
7、or$改变变量的值,格式如下:$variable:=value$color=blue$unset color$echo The sky is$color:=grey todayThe sky is grey today$echo$color$grey(6)使用变量来保存系统命令参数使用变量来保存系统命令参数 可以用变量保存系统命令参数的替换信息。$source=/etc/passwd$cd$source(7)设置只读变量设置只读变量 格式:variable-name=valuereadonly variable-name 查看所有只读变量,使用命令readonly5.4.1.2 环境变量 环境
8、变量用于所有用户进程(经常称为子进程)。登录进程称为父进程。s h e l l中执行的用户进程均称为子进程。环境变量应用于用户进程前,必须用export命令导出。(1)设置环境变量设置环境变量 VARIABLE-NAME=value;export VARIABLE-NAME也可:VARIABLE-NAME=valueexport VARIABLE-NAME环境变量环境变量(续续)(2)显示环境变量显示环境变量显示环境变量与显示本地变量一样。使用env命令可以查看所有的环境变量。(3)清除环境变量清除环境变量使用unset命令清除环境变量(4)set命令命令 不带参数的set命令输出目前所有的s
9、hell变量(含用户自定义的变量)和它们的当前值。(5)将变量导出到子进程将变量导出到子进程$cat father#!/bin/sh#father scriptecho this is the fatherFILM=A Few Good Menecho I like the film:$FILM./child#call the child scriptecho back to fatherecho and the film is:$FILM 将变量导出到子进程将变量导出到子进程(续续)$cat child#!/bin/sh#child scriptecho called from father
10、.i am the childecho film is:$FILMFILM=Die Hardecho changing film to:$FILM 显示结果this is the fatherI like the film:A Few Good Mencalled from father.i am the childfilm is:changing film to:Die Hardback to fatherand the film is:A Few Good Men$cat father2#!/bin/sh#father2 scriptecho this is the fatherFILM=
11、A Few Good Menecho I like the film:$FILM#call the child script#but export varible firstexport FILM#在调用脚本前导出变量./childecho back to fatherecho and the film is:$FILM 输出结果$./father2this is the fatherI like the film:A Few Good Mencalled from father.i am the childfilm is:A Few Good Menchanging film to:Die
12、Hardback to fatherand the film is:A Few Good Men 5.4.1.3 位置变量参数位置变量参数 如果要向一个shell脚本传递信息,可以使用位置参数完成此功能。参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制。参数从第1个开始,在第9个结束;每个访问参数前要加$符号。第一个参数为0,表示预留保存实际脚本名字。位置变量参数(续)位置变量参数(续)如向脚本传送Did You See The Full Moon信息:$0$1$2$3$4$5$6 脚本名字 Did You See The Full Moon$
13、7$8$9(1)在脚本中使用位置参数在脚本中使用位置参数$cat param#!/bin/sh#paramecho This is the script name:$0echo This is the first parameter:$1echo This is the 2nd parameter :$2echo This is the third parameter:$3 echo This is the 6th parameter :$6echo This is the 7th parameter :$7 输出结果执行:$./param Did You See The Full Moon
14、This is the script name :./paramThis is the first parameter:DidThis is the 2nd parameter :YouThis is the third parameter:SeeThis is the 6th parameter :MoonThis is the 7th parameter :(2)向系统命令传递参数向系统命令传递参数$cat findfile#!/bin/sh#findfilefind/-name$1 print 5.4.1.4 预定义变量预定义变量 预定义变量是在shell一开始时就定义了的变量,用户不能
15、重定义它。所有预定义变量都是由$符和另一个符号组成的。常用的预定义变量:$#传递到脚本的参数个数$*以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个$脚本运行的当前进程ID号 预定义变量(续)预定义变量(续)$!后台运行的最后一个进程的进程ID号$与$#相同,但是使用时加引号,并在引号中返回每个参数$-显示shell使用的当前选项,与set命令功能相同$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。(1)最后的退出状态最后的退出状态$cp ok.txt /tmp$echo$?0$cp ok.txt /usr/bin/aaa/bbbcp:cannot
16、 create regular file/usr/bin/aaa/bbb:No such file or directory$echo$?15.4.2条件测试条件测试(1)测试文件状态t e s t一般有两种格式,即:test condition或 condition 使用方括号时,要注意在条件两边加上空格。测试文件状态(续)-r文件名:如果文件存在且可读则为真-w文件名:如果文件存在且可写则为真-x文件名:如果文件存在且可执行则为真-s文件名:如果文件存在且至少有一个字符则为真-d文件名:如果文件存在且为目录则为真-f文件名:如果文件存在且为普通文件则为真-e文件名:如果文件存在则为真-c文
17、件名:如果文件存在且为字符型特殊文件则为真-b文件名:如果文件存在且为块特殊文件则为真测试文件scores.txt 是否可写$ls l scores.txt-rw-rr-1 dave admin 0 May 15 11:29 scores.txt$-w scores.txt$echo$?0$test w scores.txt$echo$?0简单的算术运算 格式:$expression例如:var1=2var2=$var1*10+1则:var2的值为21。数值数据处理Bash提供了3种方法对数值型数据进行算术运算:(1)使用let命令(2)使用shell扩展$(expression)(3)使用e
18、xpr命令(1)let命令语法:let express-list功能:求出算术表达式的值如果最后的表达式取值为0,则let命令返回1;否则返回0。$let “a=8”“b=13”#命令中的表达式含空格,需加双引号$let c=a+b$echo “The value of c is$c.”The value of c is 21.$let“a*=b”$echo“The new value of a is$a;the product of a and b.”The new value of a is 104;the product of a and b.Bash扩展语法:$(expression)
展开阅读全文