欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第2章 Shell编程.pdf

    • 资源ID:70023486       资源大小:1.11MB        全文页数:124页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第2章 Shell编程.pdf

    第第 2 2 章 章ShellShell 编程编程2.1 Shell2.1 Shell 概述概述2.2 2.2 创建和执行创建和执行 ShellShell 程序程序2.3 Shell2.3 Shell 程序设计的语法程序设计的语法2.4 Shell2.4 Shell 编程实例编程实例 2.12.1、ShellShell 概述概述1 1、什么是、什么是 ShellShell2 2、各种不同类型的、各种不同类型的 ShellShell3 3、ShellShell 的启动的启动4 4、为什么要使用、为什么要使用 ShellShell 1 1、什么是、什么是 ShellShellShellShell:用户和操作系统之间的接口:用户和操作系统之间的接口文件子系统用户 硬 件 控 制 硬件内核Shell用户用户用户高级语言和实用程序系统调用进程管理子系统进程间通信存储管理调度程序设备驱动程序字符设备块设备高速缓存核外程序Shell:用户和操作系统之间的接口 Shell:Shell:作为核外程序而存在作为核外程序而存在 csh 其它程序 bash X 窗口系统内核KernelShell ShellShell 的双重角色的双重角色命令解释程序命令解释程序打印提示符;得到命令行;解析命令;执行打印提示符;得到命令行;解析命令;执行命令;返回命令执行结果命令;返回命令执行结果程序设计语言程序设计语言提供通配符、输入提供通配符、输入/输出重定向、管道等机制输出重定向、管道等机制变量、关键字、各种控制语句变量、关键字、各种控制语句支持函数模块支持函数模块ShellShell 程序以脚本的形式存在(程序以脚本的形式存在(shell scriptshell script)举例举例重定向重定向“使用“使用echo”echo”命令创建一个文件命令创建一个文件?管道管道获取一个目录下文件的数量获取一个目录下文件的数量?ps|sort|uniq|grep v sh|moreps|sort|uniq|grep v sh|more ShellShell 作为程序设计语言有如下特点作为程序设计语言有如下特点shellshell 是解释性的,多数高级语言是编译性是解释性的,多数高级语言是编译性的的shellshell 语言与高级语言处理的对象不同语言与高级语言处理的对象不同shellshell 与系统有密切的关系与系统有密切的关系shellshell 易编写、调试、灵活性较强,但速度易编写、调试、灵活性较强,但速度低低shellshell 作为命令级语言,命令组合功能很强作为命令级语言,命令组合功能很强 2 2、各种不同的、各种不同的 ShellShellshellshell 名称名称 描述描述位置位置ashash一个小的一个小的 shellshell/bin/ash/bin/ashbshbshashash 的一个符号链接的一个符号链接/bin/bsh/bin/bshbashbash“Bourne Again Bourne Again Shell”Shell”。LinuxLinux 中的主角,中的主角,来自来自 GNUGNU 项目项目/bin/bash/bin/bashshshbashbash 的一个符号链接的一个符号链接/bin/sh/bin/shcshcshC shell,tcshC shell,tcsh 的一个符号链的一个符号链接接/bin/csh/bin/cshtcshtcsh和和 cshcsh 兼容的兼容的 shellshell/bin/tcsh/bin/tcshkshkshKorn ShellKorn Shell/bin/ksh/bin/ksh bashbash 特点特点自动补全功能自动补全功能按按 TabTab 键,自动补齐文件名键,自动补齐文件名bashbash 的命令行编辑是在提示符下,可对的命令行编辑是在提示符下,可对未执行的命令字符任意地修改未执行的命令字符任意地修改 命令历史命令历史(command history)(command history)historyhistory上、下箭头键上、下箭头键 在在 ShellShell 下输入的命令全部是下输入的命令全部是 ShellShell 提供提供的内部命令吗?的内部命令吗?否否ShellShell 内部命令、内部命令、linuxlinux 命令、安装的应用程命令、安装的应用程序、用户自己编写的应用程序序、用户自己编写的应用程序 3 3、ShellShell 的启动的启动在字符界面操作模式下,当在字符界面操作模式下,当 loginlogin 时,就时,就会启动一个会启动一个 shell shell 在图形界面操作模式下,打开一个终端在图形界面操作模式下,打开一个终端,就会启动一个,就会启动一个 shellshell 在在/etc/passwd/etc/passwd 文件中指定用户要启动的文件中指定用户要启动的shellshell 4 4、为什么要使用、为什么要使用 ShellShellLinuxLinux 系统管理系统管理系统管理员必须掌握系统管理员必须掌握了解系统,如了解系统,如 LinuxLinux 启动过程中要运行启动过程中要运行/etc/init.d/etc/init.d 目目录下的脚本来存储系统配置和建立服务录下的脚本来存储系统配置和建立服务使重复的任务自动化使重复的任务自动化如:批量建立用户、批改作业如:批量建立用户、批改作业执行日常经常执行的维护操作执行日常经常执行的维护操作如:身份验证如:身份验证写报告写报告如:大型工程进行编译时记录出错信息如:大型工程进行编译时记录出错信息建立和操作数据文件建立和操作数据文件 2.2 2.2 创建和执行创建和执行 ShellShell 程序程序编写脚本文件编写脚本文件执行脚本文件执行脚本文件调试脚本调试脚本运行环境运行环境 1 1、编写脚本文件、编写脚本文件编辑器编辑器gvimgvim、emacsemacs 等等脚本文件脚本文件注释注释正文正文退出码退出码(exit code)(exit code)Example:Example:ex1ex1脚本命名方式脚本命名方式无扩展名或后缀无扩展名或后缀#!/bin/bash#Here is commentsfor file in$*do if grep POSIX$file then more$file fidoneexit 0 2 2、执行脚本文件、执行脚本文件方法方法 1:1:$bashscript_file$bashscript_file例如:例如:$bashex1$bashex1方法方法 2:2:$bash script_file parameter$bash script_file parameter之后,也可以直接运行下面命令执行之后,也可以直接运行下面命令执行 shellshell 脚脚本本$.script_file parameter$.script_file parameter例如:例如:$bash ex1/usr/file1$bash ex1/usr/file1$.ex1/usr/zhang/file2$.ex1/usr/zhang/file2 方法方法 3:3:$chmod+x script_file$chmod+x script_file 之后,执行下面命令执行 之后,执行下面命令执行 shellshell 脚本脚本$./script_file$./script_file或者执行下面命令执行或者执行下面命令执行 shellshell 脚本脚本$PATH=$PATH:.$PATH=$PATH:.$script_file$script_file例如:例如:$chmod+x ex1$chmod+x ex1$./ex1$./ex1或者:或者:$chmod+x ex1$chmod+x ex1$PATH=$PATH:.$PATH=$PATH:.$ex1$ex1可以把脚本程序的完整的相对路径告诉 shell”把当前工作目录.”添加到命令搜索路径中 3 3、调试脚本、调试脚本“使用“使用-n”-n”选项进行选项进行 shellshell 脚本的语法检脚本的语法检 查 查使用使用-x-x 选项将选项将 shellshell 设置成跟踪模式设置成跟踪模式 bash x ex1 parameter1 parameter2bash x ex1 parameter1 parameter2添加打印信息:添加打印信息:echoecho 4 4、运行环境、运行环境运行环境运行环境一组环境变量的定义一组环境变量的定义环境变量环境变量它是一个具有特定名字的对象,它包含了它是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息一个或者多个应用程序所将使用到的信息系统环境变量与用户环境变量系统环境变量与用户环境变量 常用环境变量:常用环境变量:PATHPATH:ShellShell 命令搜索路径命令搜索路径LOGNAMELOGNAME:当前用户的登录名:当前用户的登录名 HOMEHOME:用户主目录:用户主目录HISTSIZEHISTSIZE:保存历史命令记录的条数:保存历史命令记录的条数 SHELLSHELL:当前使用的:当前使用的 ShellShell MAILMAIL:信箱路径:信箱路径PWDPWD、TERMTERM、PS1.PS1.环境文件环境文件/etc/profile,bash.bashrc,environment/etc/profile,bash.bashrc,environment 系统环境系统环境/.bash_profile,.bashrc,.bash_logout/.bash_profile,.bashrc,.bash_logout 用户环境用户环境,用户建立后便自动生成,用户建立后便自动生成/etc/profile/etc/profile为系统的每个用户设置环境信息:为系统的每个用户设置环境信息:PATHPATH、USERUSER、LOGNAMELOGNAME、LANGUAGELANGUAGE、PS1PS1/etc/bashrc/etc/bashrc 或或 environmentenvironment当用户第一次登陆时被执行当用户第一次登陆时被执行,并从并从/etc/profile.d/etc/profile.d 目录的目录的配置文件中搜集配置文件中搜集 shellshell 的设置的设置 为每一个运行为每一个运行 bash shellbash shell 的用户执行此文件的用户执行此文件 /.bash_profile:/.bash_profile:用户登录时被读取,其中包含的命令被用户登录时被读取,其中包含的命令被bashbash 执行执行或往或往 PATHPATH 添加用户相关路径:添加用户相关路径:PATH=$PATH:PATH=$PATH:$HOME/bin$HOME/bin/.bashrc/.bashrcbash shellbash shell 中启动一个新的中启动一个新的 bash shellbash shell 时读取时读取并执行 即执行并执行 即执行 ShellShell 命令时执行命令时执行/.bash_logout:/.bash_logout:清屏清屏退出时读取执行退出时读取执行 使用环境变量使用环境变量显示环境变量显示环境变量echoecho 可以查看任何一个环境变量的值可以查看任何一个环境变量的值envenv 命令显示所有的环境变量命令显示所有的环境变量 setset 显示所有本地定义的变量 显示所有本地定义的变量 设置环境变量设置环境变量ShellShell 命令行创建一个环境变量:变量名命令行创建一个环境变量:变量名=值值exportexport 创建一个全局环境变量创建一个全局环境变量 取消环境变量取消环境变量unsetunset 3.Shell3.Shell 程序设计的语法程序设计的语法特殊字符特殊字符变量变量命令表和语句块命令表和语句块条件测试条件测试条件语句条件语句重复语句重复语句函数函数其它其它 3.1 3.1 特殊字符特殊字符特殊字符特殊字符通配符通配符引号引号管道管道后台命令符后台命令符 特殊字符特殊字符通配符用于模式匹配:通配符用于模式匹配:*匹配任何字符串,包括空字符串匹配任何字符串,包括空字符串?匹配任何单个字符匹配任何单个字符 按照范围、列表或不匹配等形式匹配按照范围、列表或不匹配等形式匹配指定的字符指定的字符!紧跟紧跟 之后,表示不在一对方括号中之后,表示不在一对方括号中所列出的字符所列出的字符 举例:举例:a-da-d,x x,yyoOoOz*z*x?y x?y rc?.drc?.d!Z!Za-f*a-f*!o*!o 模式表达式模式表达式*(*(模式表模式表)“”匹配给定模式表中 模式 的“”匹配给定模式表中 模式 的 0 0 次或多次出次或多次出现,各模式之间以现,各模式之间以|分开分开+(+(模式表模式表)“”匹配给定模式表中 模式 的“”匹配给定模式表中 模式 的 1 1 次或多次出次或多次出现,各模式之间以现,各模式之间以|分开分开?(?(模式表模式表)“”匹配模式表中任何一种 模式 的“”匹配模式表中任何一种 模式 的 0 0 次或次或 1 1次出现,各模式之间以次出现,各模式之间以|分开分开(模式表模式表)“”仅匹配模式表中给定 模式 的一次出现,“”仅匹配模式表中给定 模式 的一次出现,各模式之间以各模式之间以|分开分开!(!(模式表模式表)“”除给定模式表中的一个 模式 之外,它可“”除给定模式表中的一个 模式 之外,它可以匹配其他任何东西以匹配其他任何东西 举例:举例:file*(.c|.o)file*(.c|.o)file+(.c|.o)file+(.c|.o)file?(.c|.o)file?(.c|.o)file(.c|.o)file(.c|.o)file!(.c|.o)file!(.c|.o)引号引号”双引号”双引号由它括起来的字符(除由它括起来的字符(除$、倒引号、倒引号 和反斜线和反斜线 外)均作为普通字符对外)均作为普通字符对待待 单引号 单引号由它括起来的字符均为普通字符由它括起来的字符均为普通字符倒引号倒引号 由它括起来的字符串被由它括起来的字符串被 shellshell 解释解释为命令为命令反斜线反斜线 转意符,使原字符失去其特殊的含转意符,使原字符失去其特殊的含义义 举例举例echo current directory is pwdecho current directory is pwdecho current directory is$pwdecho current directory is$pwdtoday=datetoday=dateecho Today is$todayecho Today is$todayusers=who|wc-lusers=who|wc-lecho“Filename is No$1”echo“Filename is No$1”echo“hello”echo“hello”重定向符重定向符 输出重定向输出重定向输出附加重定向输出附加重定向22错误重定向错误重定向即时文件重定向即时文件重定向 举例举例bashcmdsbashcmdsmorefork.cmorefile1whofile1ps lfile1ps lfile1find./-name test 2file2find./-name test 2file2find./-name test1 2file2find./-name test1 2file2wc loutfilewc loutfilefind/-name test1.txt 2&1find/-name test1.txt 2&1 catHELPcat1.txt 2&1&find/-name test1.txt 2&1&3.2 3.2 变量变量用户变量用户变量参数变量参数变量 用户变量用户变量用户变量在用户变量在 shellshell 程序内部定义的变量程序内部定义的变量变量的赋值和使用变量的赋值和使用$var=valuevar=value$echo$varecho$varreadread命令 从键盘读取数据然后赋值给变量命令 从键盘读取数据然后赋值给变量格式:格式:read var1 var2read var1 var2例:例:$read x y z$read x y z Today is MondayToday is Monday$echo$z$x$y$echo$z$x$y Monday Today isMonday Today is 变量的引用变量名前加变量的引用变量名前加$dir=/home/zsx/tmp$dir=/home/zsx/tmp$echo$dir$echo$dir$cat$dir/test1/m1.c$cat$dir/test1/m1.c 实例实例#!/bin/bash#!/bin/bashmyvar=“Hi there”myvar=“Hi there”echo$myvarecho$myvarecho“$myvar”echo“$myvar”echo myvarecho myvarecho$myvarecho$myvarecho$myvarecho$myvarecho Enter some textecho Enter some textecho Enter some textecho Enter some textecho“Enter some text”echo“Enter some text”read myvarread myvarecho$myvar now equals$myvarecho$myvar now equals$myvarexit 0exit 0 参数变量(也称位置参数)参数变量(也称位置参数)环境变量环境变量 说明说明$#$#传递到脚本程序的参数个数传递到脚本程序的参数个数$0$0脚本程序的名字脚本程序的名字$1,$2,$1,$2,脚本程序的参数脚本程序的参数$*$*一个全体参数组成的清单,它是一个一个全体参数组成的清单,它是一个独立的变量,各个参数之间用环境变独立的变量,各个参数之间用环境变量量 IFSIFS 中的第一个字符分隔开中的第一个字符分隔开$“$*”$*”的一种变体的一种变体 实例实例#!/bin/bash#!/bin/bashvar=“hello”var=“hello”echo“$var”echo“$var”echo“the program$0 is running”echo“the program$0 is running”echo“the first parameter is$1”echo“the first parameter is$1”echo“the second parameter is$2”echo“the second parameter is$2”echo“the number of parameter is$#”echo“the number of parameter is$#”echo“all of the parameters are$*”echo“all of the parameters are$*”用用 setset 命令为参数变量赋值(命令为参数变量赋值($0$0 除外)除外)$set m1.c m2.c$set m1.c m2.c$cat$1$2$cat$1$2$set$(wc l test_file)$set$(wc l test_file)$echo$1$echo$1unset:unset:删除参数变量删除参数变量移动参数变量移动参数变量$shift n$shift n 3.3 3.3 命令表和语句块命令表和语句块命令表命令表命令组合命令组合语句块语句块 命令表命令表命令组合命令组合管道串联管道串联command1|command2|command1|command2|分号串联分号串联command1;command2;command1;command2;条件组合条件组合ANDAND 命令表命令表格式:格式:statement1&statement2&statement3 statement1&statement2&statement3&OROR 命令表命令表格式:格式:statement1|statement2|statement3|statement1|statement2|statement3|例例pwd;who|wc l;cd/usr/binpwd;who|wc l;cd/usr/bincp test test1&rm testcp test test1&rm testcat abc|pwdcat abc|pwd 语句块语句块形式形式 statement1statement1 statement2statement2 或 或 statement1;statement2;statement1;statement2;3.4 3.4 条件测试条件测试退出码退出码testtest 命令命令test expression test expression 或 或 expression expression testtest 命令支持的条件测试命令支持的条件测试字符串比较字符串比较算术比较算术比较与文件有关的条件测试与文件有关的条件测试逻辑操作逻辑操作 字符串比较字符串比较字符串比较字符串比较 结果结果str1=str2str1=str2两个字符串相同则结果为真两个字符串相同则结果为真str1!=str2str1!=str2两个字符串不相同则结果为真两个字符串不相同则结果为真-z str-z str字符串为空则结果为真字符串为空则结果为真-n str-n str字符串不为空则结果为真字符串不为空则结果为真 算术比较算术比较算术比较算术比较 结果结果expr1 eq expr2expr1 eq expr2两个表达式相等则结果为真两个表达式相等则结果为真expr1 ne expr2expr1 ne expr2两个表达式不等则结果为真两个表达式不等则结果为真expr1 gt expr2expr1 gt expr2expr1 expr1 大于 大于expr2 expr2 则结果为真则结果为真expr1 ge expr2expr1 ge expr2expr1 expr1 大于或等于 大于或等于expr2 expr2 则结果为则结果为真真expr1 lt expr2expr1 lt expr2expr1 expr1 小于 小于expr2 expr2 则结果为真则结果为真expr1 le expr2expr1 le expr2expr1 expr1 小于或等于 小于或等于expr2 expr2 则结果为则结果为真真 与文件有关的条件测试与文件有关的条件测试文件条件测试文件条件测试 结果结果-e file-e file文件存在则结果为真文件存在则结果为真-d file-d file文件是一个子目录则结果为真文件是一个子目录则结果为真-f file-f file文件是一个普通文件则结果为文件是一个普通文件则结果为真真-s file-s file文件的长度不为零则结果为真文件的长度不为零则结果为真-r file-r file文件可读则结果为真文件可读则结果为真-w file-w file文文件件可可写写则则结结果果为为真真-x file-x file文件可执行则结果为真文件可执行则结果为真 逻辑操作逻辑操作逻辑操作逻辑操作 结果结果!expr!expr逻辑表达式求反逻辑表达式求反expr1 a expr2expr1 a expr2“两个逻辑表达式“两个逻辑表达式and”and”“”(与)“”(与)expr1 o expr2expr1 o expr2“两个逻辑表达式“两个逻辑表达式or”or”“”(或)“”(或)实例实例 1 1if test f fork.cif test f fork.cthenthen ls l fork.cls l fork.cfi fi也可以写成:也可以写成:if f fork.c if f fork.c thenthenfi fi 实例实例 2 2read a bread a bif$a=$b if$a=$b thenthen echo“a is equal to b”echo“a is equal to b”elseelse echo“a is not equal to b”echo“a is not equal to b”fi fi 实例实例 3 3echo n key in a number(1-10):echo n key in a number(1-10):read aread aif “$a”lt 1 o“$a”gt 10 if “$a”lt 1 o“$a”gt 10 then echo“error number.”then echo“error number.”exit 1exit 1elif !“$a”lt 5 elif !“$a”lt 5 then echo“Its not less 5.”then echo“Its not less 5.”else echo“Its less 5.”else echo“Its less 5.”fi fiecho“accept key in value.”echo“accept key in value.”3.5 3.5 条件语句条件语句if if 语句语句casecase 语句语句 if if 语句语句形式形式if expression if expression thenthenstatementsstatementselif expression elif expression thenthenstatementsstatementselif elif elseelsestatementsstatementsfi fi紧凑形式紧凑形式;(;(同一行上多个命令的分隔符同一行上多个命令的分隔符)例例 1 1例例(/etc/profile(/etc/profile 文件中文件中)if -f/etc/bash.bashrc;thenif -f/etc/bash.bashrc;then ./etc/bash.bashrc./etc/bash.bashrcfi fi#!/bin/bash#!/bin/bashecho“Is this morning?Please answer yes or no.”echo“Is this morning?Please answer yes or no.”read answerread answerif “$answer”=“yes”;thenif “$answer”=“yes”;then echo“Good morning”echo“Good morning”elif “$answer”=“no”;thenelif “$answer”=“no”;then echo“Good afternoon”echo“Good afternoon”else else echo“Sorry,$answer not recognized.Enter yes or no”echo“Sorry,$answer not recognized.Enter yes or no”exit 1exit 1fi fiexit 0exit 0例例 2 2 例例 3 3#!/bin/bash#!/bin/bashif -f this_file;thenif -f this_file;then foo=“true”foo=“true”elif -f that_file;thenelif -f that_file;then foo=“true”foo=“true”elif -f other_file;thenelif -f other_file;then foo=“true”foo=“true”else foo=“false”else foo=“false”fi fiif “$foo”=“true”;thenif “$foo”=“true”;then echo“one of the files exits”echo“one of the files exits”fi fi if -f this_file&-f that_file&-f other_fileif -f this_file&-f that_file&-f other_filethen then foo=“true”foo=“true”elseelse foo=“false”foo=“false”fi fiif “$foo”=“true”;thenif “$foo”=“true”;then echo“all the files exits”echo“all the files exits”fi fi if -f this_file|-f that_file|-f other_fileif -f this_file|-f that_file|-f other_filethen then foo=“true”foo=“true”elseelse foo=“false”foo=“false”fi fiif “$foo”=“true”if “$foo”=“true”thenthen echo“one of the files exits”echo“one of the files exits”fi fi casecase 语句语句形式形式case str incase str instr1|str2)statements;str1|str2)statements;str3|str4)statements;str3|str4)statements;*)statements;*)statements;esacesac 例例 1 1#!/bin/bash#!/bin/bashecho“Is this morning?Please answer yes or no.”echo“Is this morning?Please answer yes or no.”read answerread answercase“$answer”incase“$answer”in yes|y|Yes|YES)echo“Good morning!”;yes|y|Yes|YES)echo“Good morning!”;no|n|No|NO)echo“Good afternoon!”;no|n|No|NO)echo“Good afternoon!”;*)echo“Sorry,answer not recognized.”;*)echo“Sorry,answer not recognized.”;esacesacexit 0exit 0#!/bin/bash#!/bin/bashecho“Is this morning?Please answer yes or no.”echo“Is this morning?Please answer yes or no.”read answerread answercase“$answer”incase“$answer”in yY|yYeEsS)echo“Good morning!”;yY|yYeEsS)echo“Good morning!”;nN|nNoO)echo“Good afternoon!”;nN|nNoO)echo“Good afternoon!”;*)echo“Sorry,answer not recognized.”*)echo“Sorry,answer not recognized.”echo“Plese answer yes or no”echo“Plese answer yes or no”exit 1;exit 1;esacesacexit 0exit 0 3.6 3.6 重复语句重复语句forfor 语句语句whilewhile 语句语句untiluntil 语句语句selectselect 语句语句 forfor 语句语句形式形式for var in listfor var in listdodostatementsstatementsdonedone适用于对一系列字符串循环处理适用于对一系列字符串循环处理 例例 1 1#!/bin/bash#!/bin/bash for var in A B C for var in A B C do do echo var is$var echo var is$var done done 例例 2 2#!/bin/bash#!/bin/bashfor file in$(ls f*.c)for file in$(ls f*.c)dodo cat$filecat$filedonedoneexit 0exit 0 例例 3 3#!/bin/bashfor file in$*do if grep POSIX$file then more$file fidone 列出某目录下某些子目录中所有 c和 f 开头的 C 语言源程序文件#!/bin/bash cd$HOME/oslab/linux-0.11 for dir in kernel lib do echo”in$dir”cd$dir for file in c,f*.c do ls l$file done cd.done例例 4 4 whilewhile 语句语句形式形式while conditionwhile conditiondodostatementsstatementsdonedone 例例 1 1#!/bin/bash#!/bin/bashquit=nquit=nwhile “$quit”!=“y”;dowhile “$quit”!=“y”;do read menu_choiceread menu_choice case“$menu_choice”incase“$menu_choice”in a)do_something;a)do_something;b)do_anotherthing;b)do_anotherthing;q|Q)quit=y;q|Q)quit=y;*)echo“Sorry,choice not recognized.”;*)echo“Sorry,choice not recognized.”;esacesacdonedone 编写一段 shell 程序完成:根据从键盘输入的学生成绩,显示相应的成绩标准(分出不及格、及格、中等、良好和优秀等)例例 2 2#!/bin/bash echo n“Please enter the score:”read SCORE while “$SCORE”!=“q”do case$SCORE in?|1-5?)echo Failed!echo n Please enter the score:;6?)echo“Passed!”echo n”Please enter the score:”;7?)echo Medium!echo n”Please enter the score:”;8?)echo”Good!”echo n”Please enter the score:”;9?|100)echo”Excellent”echo n”Please enter the score:”;*)echo“Error”exit 1;esac read SCOREdoneexit 0 untiluntil 语句语句形式形式until conditionuntil conditiondodostatementsstatementsdonedoneNot recommended(while statement is Not recommended(while statement is preferred)pre

    注意事项

    本文(第2章 Shell编程.pdf)为本站会员(qwe****56)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开