chap 2 Linux Shell编程.ppt

上传人:qwe****56 文档编号:70019648 上传时间:2023-01-14 格式:PPT 页数:86 大小:2.29MB
返回 下载 相关 举报
chap 2 Linux Shell编程.ppt_第1页
第1页 / 共86页
chap 2 Linux Shell编程.ppt_第2页
第2页 / 共86页
点击查看更多>>
资源描述

《chap 2 Linux Shell编程.ppt》由会员分享,可在线阅读,更多相关《chap 2 Linux Shell编程.ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Linux程序设计程序设计第第2章章 Shell编程编程戴瑾戴瑾戴瑾戴瑾2主要内容主要内容vShellShell基础基础基础基础vShellShell程序设计基本语法程序设计基本语法程序设计基本语法程序设计基本语法vShellShell基础基础基础基础3Shell概述概述v用户和操作系统之间的接口用户和操作系统之间的接口用户和操作系统之间的接口用户和操作系统之间的接口文件子系统文件子系统用户用户硬硬 件件 控控 制制硬硬 件件内核内核Shell用户用户用户用户用户用户高级语言和实用程序高级语言和实用程序系统调用系统调用进程进程管理管理子系统子系统进程间通信进程间通信存储管理存储管理调度程序调度

2、程序设备驱动程序设备驱动程序字符设备字符设备 块设备块设备高速缓存高速缓存核外程序核外程序用户和操作系统用户和操作系统之间的接口之间的接口Shell基基础础4Linux内核与内核与Shellv作为核外程序而存在作为核外程序而存在作为核外程序而存在作为核外程序而存在interpretShell基基础础5Shell分类分类shellshell名称名称名称名称 描述描述描述描述位置位置位置位置ashash小型小型小型小型shellshell/bin/ash/bin/ashash.staticash.static不依靠软件库的不依靠软件库的不依靠软件库的不依靠软件库的ashash版本版本版本版本/bi

3、n/bin/ash.staticash.staticbshbshashash的一个符号链接的一个符号链接的一个符号链接的一个符号链接/bin/bin/bshbshbashbash“Bourne Again Shell”“Bourne Again Shell”。LinuxLinux中的中的中的中的主角主角主角主角,来自,来自,来自,来自GNUGNU项目项目项目项目/bin/bash/bin/bashshshbashbash的一个符号链接的一个符号链接的一个符号链接的一个符号链接/bin/bin/shshcshcshC shell,C shell,tcshtcsh的一个符号链接的一个符号链接的一个

4、符号链接的一个符号链接/bin/bin/cshcshtcshtcsh和和和和cshcsh兼容的兼容的兼容的兼容的shellshell/bin/bin/tcshtcshkshkshKornKorn Shell Shell/bin/bin/kshkshShell基基础础6Shell的双重角色的双重角色v命令解释程序命令解释程序命令解释程序命令解释程序ShellShell的工作步骤的工作步骤的工作步骤的工作步骤打印提示符打印提示符打印提示符打印提示符得到命令行得到命令行得到命令行得到命令行解析命令解析命令解析命令解析命令查找文件查找文件查找文件查找文件准备参数准备参数准备参数准备参数执行命令执行命令

5、执行命令执行命令v独立的程序设计语言解释器独立的程序设计语言解释器独立的程序设计语言解释器独立的程序设计语言解释器KISS(Keep It Small and Stupid)KISS(Keep It Small and Stupid)可复用工具可复用工具可复用工具可复用工具toolstools重定向和管道重定向和管道重定向和管道重定向和管道Shell基基础础7Shell程序程序v也称也称也称也称Shell Shell script(Shellscript(Shell脚本脚本脚本脚本)是一组命令是一组命令是一组命令是一组命令举例举例举例举例vShellShell编程的基础知识编程的基础知识编程的

6、基础知识编程的基础知识LinuxLinux环境环境环境环境LinuxLinux命令命令命令命令ShellShell程序结构程序结构程序结构程序结构#!/bin/shls-altouch aacp aa bbShell基基础础8Shell脚本结构脚本结构#!/bin/sh#first.sh#This file looks through all the files in the current#directory for the string POSIX,and then displays those#files to the standard outputfor file in*do if g

7、rep q POSIX$file then more$file fidoneexit 0Shell基基础础9Shell脚本的执行方法脚本的执行方法v方法方法方法方法1 1$shsh script_filescript_file v方法方法方法方法2 2chmodchmod +x+x script_filescript_file(可选可选可选可选chownchown,chgrpchgrp)././script_filescript_filev方法方法方法方法3 3sourcesource script_filescript_file,或,或,或,或.script_filescript_fileS

8、hell基基础础10Shell启动文件启动文件vvshsh/etc/profile/etc/profilelogin shell,system widelogin shell,system wide/.profile/.profilelogin shelllogin shellENVENVvvcshcsh/etc/csh.cshrc/etc/csh.cshrc always,system wide always,system wide/etc/csh.login/etc/csh.login login shell,system wide login shell,system wide/.csh

9、rc/.cshrc always always/.login/.login login shell login shell/.logout/.logout logout shell logout shell/etc/csh.logout/etc/csh.logout logout shell,system wide logout shell,system widevvtcshtcsh/.tcshrc/.tcshrclogin shelllogin shellvvbashbash/etc/profile/etc/profile /.bash_profile /.bash_profile /.ba

10、sh_login /.bash_login /.bash_profile/.bash_profile/etc/bash.bashrc/etc/bash.bashrc /.bashrc/.bashrcBASH_ENVBASH_ENVShell基基础础11Shell的特殊字符的特殊字符字符字符说明说明*匹配任意个字符匹配任意个字符?匹配一个字符匹配一个字符与与中的任意一个字符匹配中的任意一个字符匹配!.与不在与不在 中出现的任意字符匹配中出现的任意字符匹配主目录主目录#Shell注释注释;命令分隔符命令分隔符&先执行第一个命令;若第一个命令执行成功,执行第先执行第一个命令;若第一个命令执行成功,执

11、行第2个命令个命令|先执行第一个命令;若第一个命令执行失败,执行第先执行第一个命令;若第一个命令执行失败,执行第2个命令个命令 1)转义符转义符2)连续命令换行提示符连续命令换行提示符&后台执行后台执行Shell基基础础12Shell的特殊字符应用举例的特殊字符应用举例vv 如果当前目录下有如下文件如果当前目录下有如下文件如果当前目录下有如下文件如果当前目录下有如下文件test1 test2 test3 test4 test-5 test1 test2 test3 test4 test-5 testmesstestmess 命令命令结果结果%ls test*test1 test2 test3

12、test4 test-5 testmess%ls test?test1 test2 test3 test4%ls test123test1 test2 test3%ls 显示用户主目录下的文件显示用户主目录下的文件Shell基基础础13Shell输入输入/输出重定向输出重定向v每个处理器都由个默认的文件描述符每个处理器都由个默认的文件描述符每个处理器都由个默认的文件描述符每个处理器都由个默认的文件描述符正常情况下终端是正常情况下终端是正常情况下终端是正常情况下终端是stdoutstdout和和和和stderrstderr键盘是键盘是键盘是键盘是stdinstdin名字名字输入输入/输出输出描述

13、符号码描述符号码stdin输入输入0stdout输出输出1stderr错误输出错误输出2用户定义用户定义输入输入/输出输出3 19Shell基基础础14Shell输入输入/输出重定向输出重定向vv重定向重定向重定向重定向改变改变改变改变stdinstdin,stdoutstdout,stderrstderr或任何用户自定义文件描述符的方向或任何用户自定义文件描述符的方向或任何用户自定义文件描述符的方向或任何用户自定义文件描述符的方向创建文件创建文件创建文件创建文件追加文件使用现有文件作为输入追加文件使用现有文件作为输入追加文件使用现有文件作为输入追加文件使用现有文件作为输入合并两个输出流合并两

14、个输出流合并两个输出流合并两个输出流使用部分使用部分使用部分使用部分shellshell命令作为输入命令作为输入命令作为输入命令作为输入操作符操作符描述描述 将后面的文件作为将后面的文件作为stdout打开打开 将内容追加到文件将内容追加到文件&将将stdout和和stderr合并合并&将将stdout追加到追加到 stderr|将将stdout管道化到管道化到 stdin n&-关闭文件描述符关闭文件描述符Shell基基础础15Shell输入输入/输出重定向举例输出重定向举例vv:输出重定向:输出重定向:输出重定向:输出重定向$ls ls l l lsoutput.txtlsoutput.t

15、xtvv :追加:追加:追加:追加$psps lsoutput.txtlsoutput.txtvv出错输出重定向出错输出重定向出错输出重定向出错输出重定向 (2)(2)$kill HUP 1234$kill HUP 1234 killout.txtkillout.txt 22 errerror.txtor.txtvv:输入重定向:输入重定向:输入重定向:输入重定向$more$more|sort passort.outpassort.outShell基基础础17Shell内置命令内置命令shcsh描述描述alias/unalias命令别名命令别名ulimitlimit/unlimit限制作业对资

16、源的使用限制作业对资源的使用cdcd切换目录切换目录echoecho将参数回显到将参数回显到stdouteval计算并执行参数计算并执行参数execexec执行参数执行参数exitexit退出退出shellShell基基础础18Shell内置命令内置命令shcsh描述描述goto跳转到跳转到shell程序中指定的标签程序中指定的标签history显示历史命令显示历史命令jobsjobs显示活跃作业显示活跃作业%job no.%job no.将作业置到前台将作业置到前台killkill想作业发送一个信号想作业发送一个信号fg,bgfg,bg将进程放到前台将进程放到前台/后台后台stop终止一个后

17、台进程终止一个后台进程suspend将将shell挂起挂起loginlogin,logout登录登录/注销注销Shell基基础础19Shell内置命令内置命令shcsh说明说明set/unset设置设置/取消一个取消一个shell参数参数set/unset设置设置/取消一个本地变量取消一个本地变量exportsetenv/unsetenv设置设置/取消一个全局变量取消一个全局变量nice修改进程的修改进程的nice值值nohup不挂断地运行命令不挂断地运行命令(类似于守护进程类似于守护进程)notify作业状态变化时通知用户作业状态变化时通知用户traponintr指定在接收到信号后将要采取的

18、行动指定在接收到信号后将要采取的行动dirs显示目录堆叠中的记录显示目录堆叠中的记录popd,pushdPop/push 目录栈目录栈Shell基基础础20Shell内置命令内置命令shcsh说明说明hashrehash计算目录内容的内部哈希表计算目录内容的内部哈希表read从从stdin读取一行读取一行shiftshift切换切换shell命令命令 参数参数.source读取并执行文件读取并执行文件timestime显示执行时间显示执行时间umaskumask设置默认权限设置默认权限test测试条件表达式测试条件表达式expr显示或设置显示或设置shell 变量变量waitwait等待后台作

19、业结束等待后台作业结束Shell基基础础21主要内容主要内容vShellShell基础基础基础基础vShellShell程序设计基本语法程序设计基本语法程序设计基本语法程序设计基本语法22Shell程序设计的语法程序设计的语法v变量变量变量变量v条件测试条件测试条件测试条件测试v条件语句条件语句条件语句条件语句v重复语句重复语句重复语句重复语句v命令表和语句块命令表和语句块命令表和语句块命令表和语句块v函数函数函数函数v其它其它其它其它Shell程程序序设设计计基基本本语语法法23Shell环境变量环境变量环境变量环境变量环境变量环境变量 说明说明说明说明$HOME$HOME当前用户的登录目录

20、当前用户的登录目录当前用户的登录目录当前用户的登录目录$PATH$PATH以冒号分隔、用来搜索命令的目录清单以冒号分隔、用来搜索命令的目录清单以冒号分隔、用来搜索命令的目录清单以冒号分隔、用来搜索命令的目录清单$PS1$PS1命令行提示符,通常是命令行提示符,通常是命令行提示符,通常是命令行提示符,通常是”$”$”字符字符字符字符$PS2$PS2辅助提示符,用来提示后续输入,通常是辅助提示符,用来提示后续输入,通常是辅助提示符,用来提示后续输入,通常是辅助提示符,用来提示后续输入,通常是”字符字符字符字符$IFS$IFS输入区分隔符。当输入区分隔符。当输入区分隔符。当输入区分隔符。当shell

21、shell读取输入数据时会把一组字符读取输入数据时会把一组字符读取输入数据时会把一组字符读取输入数据时会把一组字符看成是单词之间的分隔符,通常是空格、制表符、换看成是单词之间的分隔符,通常是空格、制表符、换看成是单词之间的分隔符,通常是空格、制表符、换看成是单词之间的分隔符,通常是空格、制表符、换行符等行符等行符等行符等Shell程程序序设设计计基基本本语语法法24参数变量和内部变量参数变量和内部变量环境变量环境变量环境变量环境变量 说明说明说明说明$传递到脚本程序的参数个数传递到脚本程序的参数个数传递到脚本程序的参数个数传递到脚本程序的参数个数$0$0脚本程序的名字脚本程序的名字脚本程序的名

22、字脚本程序的名字$1,$2,$1,$2,脚本程序的参数脚本程序的参数脚本程序的参数脚本程序的参数$*$*全体参数组成的清单,它是一个独立的变量,各个参全体参数组成的清单,它是一个独立的变量,各个参全体参数组成的清单,它是一个独立的变量,各个参全体参数组成的清单,它是一个独立的变量,各个参数之间用环境变量数之间用环境变量数之间用环境变量数之间用环境变量IFSIFS中的第一个字符分隔开中的第一个字符分隔开中的第一个字符分隔开中的第一个字符分隔开$“$*”“$*”的一种变体,它不使用的一种变体,它不使用的一种变体,它不使用的一种变体,它不使用IFSIFS环境变量环境变量环境变量环境变量Shell程程

23、序序设设计计基基本本语语法法25Shell变量赋值变量赋值Bourne ShellC Shell本地变量本地变量my=testset my=test全局变量全局变量export mysetenv my test$salutation=Hellosalutation=Hello$echo$salutationecho$salutationHelloHello$salutation=salutation=Yes DearYes Dear$echo$salutationecho$salutationYes DearYes Dear$salutation=7+5salutation=7+5$echo$

24、salutationecho$salutation7+57+5注意:变量赋值时注意:变量赋值时“=”两边没有空格两边没有空格Shell程程序序设设计计基基本本语语法法26Shell变量访问变量访问vv%echo“$PAGER”%echo“$PAGER”vv%echo“$PAGER”%echo“$PAGER”使用使用使用使用避免歧异避免歧异避免歧异避免歧异vv%temp_nametemp_name=“=“hahahaha”vv%temp=“%temp=“hehehehe”vv%echo$temp%echo$temphehehehevv%echo$%echo$temp_nametemp_nameh

25、ahahahavv%echo$%echo$temp_nametemp_namehehe_namehehe_namevv%echo$%echo$temp_nametemp_name hahahahaShell程程序序设设计计基基本本语语法法27参数变量和内部变量举例参数变量和内部变量举例1vv假设脚本名为假设脚本名为假设脚本名为假设脚本名为myscriptmyscript如果执行如果执行如果执行如果执行././myscriptmyscript foofoo bar bar bazbaz,结果如何?,结果如何?,结果如何?,结果如何?#!/bin/shsalutation=Helloecho$sa

26、lutationecho The program$0 is now runnningecho The 1st&the 2nd parameters were$1&$2echo$*exit 0$./myscript foo bar baz./myscript foo bar bazHelloHelloThe program The program./myscript./myscript is now runnningis now runnningThe 1st&the 2nd parameters were The 1st&the 2nd parameters were foofoo&barba

27、rfoo bar bazfoo bar bazShell程程序序设设计计基基本本语语法法28参数变量和内部变量举例参数变量和内部变量举例2v假设脚本名为假设脚本名为假设脚本名为假设脚本名为var3.shvar3.sh执行执行执行执行shsh./var3.sh hello world earth./var3.sh hello world earth,输入如何?,输入如何?,输入如何?,输入如何?#!/bin/sh echo I was called with$#parameters echo My name is$0 echo My first parameter is$1echo My sec

28、ond parameter is$2echo All parameters are$shsh./var3.sh hello world earth./var3.sh hello world earthI was called with I was called with 3 3 parameters parameters My name is My name is./var3.sh./var3.sh My first parameter is My first parameter is hello hello My second parameter is My second parameter

29、 is world world All parameters are All parameters are hello world earthhello world earthShell程程序序设设计计基基本本语语法法29参数变量和内部变量举例参数变量和内部变量举例3vv代码说明代码说明代码说明代码说明第第第第5 5行使用行使用行使用行使用$USER_NAMEUSER_NAME _file_file来确保来确保来确保来确保shellshell将使用变量将使用变量将使用变量将使用变量$USER_NAMEUSER_NAME,而不是,而不是,而不是,而不是$USER_NAMEUSER_NAME_fi

30、le_file第第第第6 6行使用行使用行使用行使用“$USER_NAME_fileUSER_NAME_file”避免任何输入给避免任何输入给避免任何输入给避免任何输入给$USER_NAMEUSER_NAME的空格的空格的空格的空格1#!/bin/sh 2 echo What is your name?3 read USER_NAME 4 echo Hello$USER_NAME 5 echo File$USER_NAME_file will be created 6 touch$USER_NAME_file Shell程程序序设设计计基基本本语语法法30Shell变量引用变量引用v当包含一个

31、或多个空格时使用当包含一个或多个空格时使用当包含一个或多个空格时使用当包含一个或多个空格时使用 v当当当当$variable$variable被被被被双引用双引用双引用双引用包含时,将被其值取代包含时,将被其值取代包含时,将被其值取代包含时,将被其值取代v当当当当$variable$variable被被被被单引号单引号单引号单引号(.)引用时,不会被替换)引用时,不会被替换)引用时,不会被替换)引用时,不会被替换v在在在在$variable$variable前带有前带有前带有前带有 时,将取消上述特殊含义时,将取消上述特殊含义时,将取消上述特殊含义时,将取消上述特殊含义v一般而言,字符串用双引

32、号引用,以便避免被空格一般而言,字符串用双引号引用,以便避免被空格一般而言,字符串用双引号引用,以便避免被空格一般而言,字符串用双引号引用,以便避免被空格分隔,但允许使用分隔,但允许使用分隔,但允许使用分隔,但允许使用$来替换来替换来替换来替换Shell程程序序设设计计基基本本语语法法31变量与字符串引用变量与字符串引用字符串字符串作用作用var=valueset var=value将值赋给变量将值赋给变量$var$var获取获取shell变量变量cmd取代取代stdout,用命令执行结果赋值,用命令执行结果赋值string引用字符串,但不替换引用字符串,但不替换“string”用运行结果替换

33、取代字符串用运行结果替换取代字符串%varnamevarname=/bin/date=/bin/date%echo$%echo$varnamevarname%echo%echo Now is$Now is$varnamevarname%echo%echo“Now is$Now is$varnamevarname”%set varname2=/bin/date%set varname2=/bin/date%echo$varname2%echo$varname2%echo%echo Now is$varname2Now is$varname2%echo%echo“Now is$varname2No

34、w is$varname2”Tue Nov 13 14:54:57 CST 2007Now is$varnameNow is Tue Nov 13 14:54:57 CST 2007Shell程程序序设设计计基基本本语语法法32Shell变量引用举例变量引用举例#!/bin/shmyvar=Hi thereecho$myvarecho$myvarecho$myvarecho$myvarecho Enter some textread myvarecho$myvar is$myvarexit 0Shell程程序序设设计计基基本本语语法法33Shell变量引用举例输出结果变量引用举例输出结果 Ou

35、tput#!/bin/shmyvar=Hi thereecho$myvar Hi thereecho$myvarHi thereecho$myvar$myvarecho$myvar$myvarecho Enter some textEnter some textread myvarHelloecho$myvar is$myvar$myvar is Helloexit 0Shell程程序序设设计计基基本本语语法法3435使用双引号的字符使用双引号的字符v双引号是双引号是双引号是双引号是ShellShell的重要组成部分的重要组成部分的重要组成部分的重要组成部分$echo Hello Worlde

36、cho Hello World Hello World Hello World$echo Hello Worldecho Hello World Hello WorldHello Worldv如何显示如何显示如何显示如何显示:Hello WorldHello Worldv以下命令可以吗?以下命令可以吗?以下命令可以吗?以下命令可以吗?$echo Hello Worldecho Hello World v正确方法:正确方法:正确方法:正确方法:echo Hello echo Hello WorldWorld Shell程程序序设设计计基基本本语语法法36Shell变量操作符变量操作符操作符操作符

37、说明说明$#var字符串长度字符串长度$var#pattern删除最短前缀删除最短前缀$var#pattern删除最长前缀删除最长前缀$var%pattern删除最短后缀删除最短后缀$var%pattern删除最长后缀删除最长后缀#!/bin/shvar=Nothing happened end closing endecho$#varecho$var#*ingecho$var#*ingecho$var%end*echo$var%end*Results:32happened end closing endendNothing happened end closingNothing happen

38、edShell程程序序设设计计基基本本语语法法37条件测试条件测试v测试命令测试命令测试命令测试命令testtest expression expression 或或或或 expression expression vtesttest命令支持的条件测试命令支持的条件测试命令支持的条件测试命令支持的条件测试字符串比较字符串比较字符串比较字符串比较算术比较算术比较算术比较算术比较与文件有关的条件测试与文件有关的条件测试与文件有关的条件测试与文件有关的条件测试逻辑操作逻辑操作逻辑操作逻辑操作Shell程程序序设设计计基基本本语语法法38测试命令使用方法测试命令使用方法Shell程程序序设设计计基基本

39、本语语法法39字符串比较字符串比较字符串比较字符串比较 结果结果str1=str2两个字符串相同,则结果为真两个字符串相同,则结果为真str1!=str2两个字符串不相同,则结果为真两个字符串不相同,则结果为真-z str字符串为空,则结果为真字符串为空,则结果为真-n str字符串不为空,则结果为真字符串不为空,则结果为真str1=str1=abcabc if$if$strstr=abcabc ;t;thenhen echo The strings are equal echo The strings are equalelseelse echo The strings are not eq

40、ual“echo The strings are not equal“fi fi“=”前后需要有空格前后需要有空格Shell程程序序设设计计基基本本语语法法40算术比较算术比较算术比较算术比较算术比较算术比较 结果结果结果结果expr1 expr1 eqeq expr2 expr2两个表达式相等则结果为真两个表达式相等则结果为真两个表达式相等则结果为真两个表达式相等则结果为真expr1 ne expr2expr1 ne expr2两个表达式不等则结果为真两个表达式不等则结果为真两个表达式不等则结果为真两个表达式不等则结果为真expr1 expr1 gtgt expr2 expr2expr1 e

41、xpr1 大于大于大于大于 expr2 expr2 则结果为真则结果为真则结果为真则结果为真expr1 expr1 gege expr2 expr2expr1 expr1 大于或等于大于或等于大于或等于大于或等于 expr2 expr2 则结果为真则结果为真则结果为真则结果为真expr1 expr1 lt lt expr2 expr2expr1 expr1 小于小于小于小于 expr2 expr2 则结果为真则结果为真则结果为真则结果为真expr1 le expr2expr1 le expr2expr1 expr1 小于或等于小于或等于小于或等于小于或等于 expr2 expr2 则结果为真则

42、结果为真则结果为真则结果为真x=5;y=7x=5;y=7 if$x-if$x-lt lt$y;$y;thenthen echo x is less than yecho x is less than yfi fiShell程程序序设设计计基基本本语语法法41与文件有关的条件测试与文件有关的条件测试文件条件测试文件条件测试文件条件测试文件条件测试结果结果结果结果-e file-e file文件存在则结果为真文件存在则结果为真文件存在则结果为真文件存在则结果为真-d file-d file文件是一个子目录则结果为真文件是一个子目录则结果为真文件是一个子目录则结果为真文件是一个子目录则结果为真-f

43、file-f file文件是一个普通文件则结果为真文件是一个普通文件则结果为真文件是一个普通文件则结果为真文件是一个普通文件则结果为真-s file-s file文件的长度不为零则结果为真文件的长度不为零则结果为真文件的长度不为零则结果为真文件的长度不为零则结果为真-r file-r file文件可读则结果为真文件可读则结果为真文件可读则结果为真文件可读则结果为真-w file-w file文件可写则结果为真文件可写则结果为真文件可写则结果为真文件可写则结果为真-x file-x file文件可执行则结果为真文件可执行则结果为真文件可执行则结果为真文件可执行则结果为真 mkdirmkdir t

44、emp temp if -if -d d temp;then temp;then echo temp is a directoryecho temp is a directory fi fiShell程程序序设设计计基基本本语语法法42逻辑比较逻辑比较逻辑操作逻辑操作逻辑操作逻辑操作结果结果结果结果!exprexpr逻辑表达式求反逻辑表达式求反逻辑表达式求反逻辑表达式求反expr1 a expr2expr1 a expr2两个逻辑表达式两个逻辑表达式两个逻辑表达式两个逻辑表达式“And”And”(“与与与与”)expr1 o expr2expr1 o expr2两个逻辑表达式两个逻辑表达式两个

45、逻辑表达式两个逻辑表达式“Or”Or”(“或或或或”)Shell程程序序设设计计基基本本语语法法43条件语句条件语句vif if语句语句语句语句vcasecase语句语句语句语句Shell程程序序设设计计基基本本语语法法44if语句语句v形式形式形式形式if expression if expression thenthenstatementsstatementselifelif expression expression thenthenstatementsstatementselifelif elseelsestatementsstatementsfi fiv紧凑形式紧凑形式紧凑形式紧凑形

46、式;(同一行上多个命令的分隔符同一行上多个命令的分隔符同一行上多个命令的分隔符同一行上多个命令的分隔符)Shell程程序序设设计计基基本本语语法法45if语句举例语句举例Shell程程序序设设计计基基本本语语法法46elif语句语句v做进一步检查做进一步检查做进一步检查做进一步检查Shell程程序序设设计计基基本本语语法法47case语句语句Shell程程序序设设计计基基本本语语法法48case语句举例语句举例v当执行当执行当执行当执行appendappend时,有多少种可能的情况出现?时,有多少种可能的情况出现?时,有多少种可能的情况出现?时,有多少种可能的情况出现?#!/bin/sh#脚本

47、名脚本名:appendcase$#1)cat$1;2)cat$2$1;*)echo usage:$0 fromFile toFile;esac1.No parameter or more than 22.Only 1 parameter&the file exist3.Only 1 parameter&the file not exist4.Both file exist5.1st exist;2nd not exist6.2nd exist;1st not exist7.Both files not existShell程程序序设设计计基基本本语语法法49循环语句循环语句vforfor语句语

48、句语句语句vwhilewhile语句语句语句语句vuntiluntil语句语句语句语句vselectselect语句语句语句语句Shell程程序序设设计计基基本本语语法法50for语句语句Shell程程序序设设计计基基本本语语法法51while语句语句Shell程程序序设设计计基基本本语语法法52until语句语句Shell程程序序设设计计基基本本语语法法53select语句语句v形式形式形式形式select item in select item in itemlistitemlistdodostatementsstatementsdonedonev作用作用作用作用生成菜单列表生成菜单列表生

49、成菜单列表生成菜单列表Shell程程序序设设计计基基本本语语法法54select语句语句v举例:一个简单的菜单选择程序举例:一个简单的菜单选择程序举例:一个简单的菜单选择程序举例:一个简单的菜单选择程序#!/bin/#!/bin/shshclearclearselect item in select item in Continue Continue FinishFinishdodo case“$item”in case“$item”in Continue);Continue);Finish)break;Finish)break;*)echo“Wrong choice!Please selec

50、t again!”;*)echo“Wrong choice!Please select again!”;esacesacdonedonevQuestion:Question:用用用用whilewhile语句模拟语句模拟语句模拟语句模拟?Shell程程序序设设计计基基本本语语法法55命令组合语句命令组合语句v分号串联分号串联command1;command2;command1;command2;v条件组合条件组合ANDAND命令表命令表命令表命令表 格式:格式:格式:格式:statement1&statement2&statement3&statement1&statement2&stateme

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

当前位置:首页 > 技术资料 > 其他杂项

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁