书签 分享 收藏 举报 版权申诉 / 134
上传文档赚钱

类型[计算机硬件及网络]Linux的shell编程课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5102875
  • 上传时间:2023-02-11
  • 格式:PPT
  • 页数:134
  • 大小:269.02KB
  • 【下载声明】
    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)

    19、功能:计算expression并返回它的值$a=8 b=13$echo “The new value of c is$(a+b).”The new value of c is 21.expr命令语法:expr args功能:计算args的值,并返回它的值到标准输出$var1=10$var1=expr$var1+1$echo$var111(2)测试时使用逻辑操作符号测试时使用逻辑操作符号 Shell提供了三种逻辑操作完成两个文件状态比较的功能-a 逻辑与-o 逻辑或!逻辑否测试两个文件是否均可写$-w scores.txt a w results.txt$echo$?0(3)字符串测试字符串测试

    20、 字符串测试共包含五种格式:test“string”test string_operator“string”test“string”string_operator“string”string_operator string string string_operator string String_operator 可以为:=:两个字符串相等!=:两个字符串不等-z:空串-n:非空串 比较两个字符串是否相等$TAPE1=”/dev/rmt0”$TAPE2=”dev/rmt1”$“$TAPE1”=“$TAPE2”$echo$?1(4)数值测试数值测试 格式:“number”numeric_oper

    21、ator“number”或“number”numeric_operator“number”numeric_operator一般为:-eq:数值相等-ne:数值不相等-gt:大于-lt:小于-le:小于等于-ge:大于等于 测试两个数是否相等$NUMBER=130$“NUMBER”eq“130”$echo$?0测试两个表达式$“990”le“995”a“123”gt“33”$echo$?05.4.3 控制流结构控制流结构(1)if 语句 if expression1 then command-list elif expression2 then then-command-list else el

    22、se-command-listfi在这里,一个expression是一系列命令。也可采用如下格式:if expression1;then command-list elif expression2;then then-command-list else else-command-listfi 三种典型的if结构第一种if语句:if expression then then-commandsfi第二种if语句:if expression then then-commands else else-commandsfi 第3种if语句if expression1 then then-commands

    23、elif expression2 then elif1-commandselif expression3 then elif2-commands else else-commandsfi例如:$cat grade_evaluate.sh#!/bin/sh#Usage:./grade_evaluate grade#grade should be between 0 and 100,including 0 and 100if$1 lt 0 ;thenecho Error:invalid gradeelif$1 lt 60 ;thenecho no passelif$1 lt 70 ;thenech

    24、o passelif$1 lt 80 ;thenecho goodelif$1 le 100 ;thenecho excellentelseechoError:invalid gradefi(2)case 语句 格式:case test-string in模式1)command-list1 ;模式2)command-list2 ;*)command-listN+1;esac case 语句(续)in 的每一模式必须以右括号)结束,取值可以为变量或常数,匹配发现string1取值符合某一模式后,其间所有命令开始执行直至;.如果模式1、模式2中没有和strings1相符合的,则星号(*)下面的语句

    25、被执行。模式匹配符*代表任意字符,?表示任意单个字符,.表示类或范围中任意字符。$cat caseexample.sh#!/bin/shecho n Do you want to continue this operation?nread yesnocase$yesno iny|Y|Yes|yes)echo system will continue this operation;n|N|no|NO)echo system will skip this operation;*)echo Incorrect inputexit 1;esac(3)for语句 有两种使用 for 语句的表达式:第一种

    26、形式是:for var in listdocommandsdone第二种形式是:for vardostatementsDone使用这种形式时,变量var的取值是位置参数。$cat simplefor.sh#!/bin/shfor i in 1 3 5 7 9doecho$Idone(4)while和until循环 while循环的一般格式为:while expressiondostatementsdone$cat whileexample.sh#!/bin/shwhile read stringdoecho”your string is$string”doneecho Thank you,By

    27、e!#!/bin/bash#program test_while#count=1while-n$*doecho This is parameter number$count$1shiftlet count=count+1done until语句的格式为:until expressiondocommandsdone#!/bin/bash#program test_until#count=1until-z$*doecho This is parameter number$count$1shiftlet count=count+1done$cat untilexample.sh#!/bin/shun

    28、til read stringdoecho”your string is$string”doneecho Thank you,Bye!输出结果$your string is(程序继续)$abcThank you,Bye!Shell还提供了true和false两条命令用于建立无限循环结构的需要,它们的返回状态分别是总为0或总为非0(5)break and continue break 退出循环$cat breakexample.sh#!/bin/shwhile:doread stringif$?!=0;thenbreakfidone$cat continueexample.sh#!/bin/sh

    29、for(i=0;i /p a t h/W R I T E _ F I L E.T X T#WRITE_FILE.TXT是写入数据的文件名done/path/WRITE_FILE.TXT#WRITE_FILE.TXT是写入数据的文件名done(4)cat 命令 cat 命令可以用来显示文件内容,创建文件,还可以用来显示控制符号(用-v选项)。cat命令一下子显示整个完整的文件。如果希望每次显示一页,可以使用more命令$cat filename$more filename 连接文件$cat filename1 filename2 filename3#该命令把两个文件连成一个文件filename3

    30、输入文件$cat a.txtabcefg(5)tee 功能:tee命令从标准输入设备读取数据,将其内容输出到标准输出设备,同时将输出的一个副本保存成文件。语 法:tee-a-i-help-version文件 参 数:-a 附加到文件的后面,而非覆盖它。如果tee指令的文件已经存在,没有-a则会覆盖该文件的内容。有-a,数据会新增在该文件内容的最后面,而不会删除原先之内容。-i 忽略中断信号 -help 在线帮助 -version 显示版本信息(6)文件重定向 在Linux中,每一个进程都有三个特殊的文件描述指针:标准输入(standard input,文件描述符为0)、标准输出(standar

    31、d output,文件描述符为1)、标准错误输出(standard error,文件描述符为2)。在Linux中,可以通过文件重定向指定命令的标准输入、标准输出和标准错误输出。在shell中,使用者可以利用“”和“filename:将标准输出重定向到文件filename。command 1filename:将标准输出重定向到文件filename。commandfilename:将标准输出重定向到文件filename(追加)。commandfilename 2&1将标准输出和标准错误输出一起重定向到文件filename。command 2filename:将标准错误输出重定向到文件filenam

    32、e。command 2filename:将标准错误输出重定向到文件filename(追加)。文件重定向(续)commandfilename 2&1将标准输出和标准错误输出一起重定向到文件filename中(追加)。commandfilename2:让command命令以文件filename为标准输入,以文件filename2为标准输出。commandfilename:让command命令以文件filename为标准输入。commanddelimiter:让command命令以标准输入作为输入,直到遇到delimiter分界符。文件重定向(续)command&m:把标准输出重定向到文件描述符m中

    33、。command&-:关闭标准输入。5.5 shell高级编程5.5.1命令排列、调度与替换 (1)命令排列 shell 允许用户在不同的命令之间,放上特殊的排列字符。用户如果需要在一行中给出多个命令需使用分号“;”。command1;command2 (1)命令排列(续)command1&command2 上面的命令表示只有当 command1 正确运行完毕后,才执行 command2。command1|command2 上面的命令表示只有当 command1 运行失败才会执行 command2。(2)命令的任务调度 在shell下面,一个新产生的进程可以通过用命令后面的符号“;”和“&”来

    34、分别以前台和后台的方式来执行,语法如下:command;产生一个前台的进程,下一个命令须等该命令运行结束后才能输入。command&产生一个后台的进程,此进程在后台运行的同时,可以输入其他的命令。(3)命令的替换 command1$(command2)除了$(),还可以用后引号(backquote):command1 command2 5.5.2引用(1)双引号 使用双引号可引用除字符$(美元符号)、(反引号)、(反斜线)外的任意字符或字符串。(2)单引号如果用单引号把字符串括起来,则单引号内字符串中的任何特殊字符的特殊含义均被屏蔽。引用(续)(3)反引号shell将反引号中的内容作为一个系统

    35、命令,并执行其内容。使用这种方法可以替换输出为一个变量。$TIME=date$echo$TIME(4)反斜线 如果一个字符有特殊含义,可以使用反斜线防止shell误解其含义,即屏蔽其特殊含义。下述字符包含有特殊意义:&*+$|?5.5.3命令分组 在shell中有两种命令分组的方法:“()”和“”,当用户在执行某个命令时不想让命令运行时对状态集合(如位置参数、环境变量、当前工作目录等)的改变影响到下面语句的执行时,就应该把这些命令放在圆括弧中 用于将顺序执行的命令的输出结果用于另一个命令的输入(管道方式)。5.5.4运行shell程序的方法 执行shell程序,有三种方法:(1)将shell程

    36、序作为sh命令的输入,具体如下:#sh first.sh 运行shell程序的方法(续)(2)利用输入重定向#bashfirst.sh(3)使用chmod命令使first.sh成为可执行的,然后直接执行。#chmod a+x first.sh#first.sh 5.5.5 bash程序的调试 shell程序的调试主要是利用bash命令解释程序的选择项。调用bash的形式是:bash-选择项 shell程序文件名几个常用的选择项-e:如果一个命令失败就立即退出-n:读入命令但是不执行它们-u:置换时把未设置的变量看作出错-v:当读入shell输入行时把它们显示出来-x:执行命令时把命令和它们的参数显示出来(1)未置变量退出和立即退出 未置变量退出:如果引用了一个未赋值的变量就终止shell程序的执行。未置变量退出选择项为“-u”。要想在错误发生时使shell程序立即结束,可以使用“-e”选项。(2)shell程序的跟踪 调试shell程序的主要方法是利用shell命令解释程序的“-v”或“-x”选项来跟踪程序的执行。“-v”选择项使shell在执行程序的过程中,把它读入的每一个命令行都显示出来,而“-x”选择项使shell在执行程序的过程中把它执行的每一个命令在行首用一个“+”加上命令名显示出来。并把每一个变量和该变量所取的值也显示出来。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:[计算机硬件及网络]Linux的shell编程课件.ppt
    链接地址:https://www.163wenku.com/p-5102875.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库