UNIX-shell编程.ppt_第1页
UNIX-shell编程.ppt_第2页
UNIX-shell编程.ppt_第3页
UNIX-shell编程.ppt_第4页
UNIX-shell编程.ppt_第5页
免费预览已结束,剩余51页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

UNIX shell编程 Shell概述BourneshellKornshellCshell Shell概述 shell特点把已有命令进行适当组合 构成新的命令 而组合方式很简单 可以进行交互式处理 用户和UNIX系统之间通过shell进行交互式会话 实现通信 灵活地利用位量参数传递参数值 结构化的程序模块 提供了顺序流程控制 条件控制 循环控制等 提供通配符 输入 输出重定向 管道线等机制 方便了模式匹配 I O处理和数据传输 便于用户开发新的命令 利用shell过程可把用户编写的可执行程序与UNIX命令结合在一起 当作新的命令使用 提供后台处理方式 不用打断前台工作 版本Bourneshell sh AT TBell实验室SlephenBourneCshell csh BerkeleyBillJoyKornshell ksh AT TBell实验室DavidKorn Shell处理命令行和执行命令行 Shell程序示例直接命令输入ls l usr meng执行shell程序文件 catlistsubdir ifnoarguments thenlistingthecurrentdirectory otherwise listingeachsubdirectoryiftest 0thenlselseforIdols l I grep d donefi Shell脚本的建立和执行Shell脚本使用vi编辑shell脚本执行shell脚本的方式输入定向到shell sh 脚本名以脚本名作为shell参数 bin sh脚本名 参数 脚本名 参数 将shell脚本改为可执行权限 chmoda xex2 ex2强制当前shell执行Bourneshell脚本 bin sh BourneShell程序设计 Shell变量Shell中的特殊字符参数置换变量控制结构Shell特殊命令 变量 用户定义的变量变量名 字符串变量名的命名规则 两边不能有空格使用变量方法引用变量数值 变量名 或 变量名 变量赋值 dir usr meng ff echo dir usr meng ff echodirdir ls dir qc m1 c s ing echoread sandwrite s dir usr meng ff echo dir Dir usr meng ff name zhanglisi A BB CC good 输入输出命令read命令从标准输入中读取数据 然后赋给制定变量read变量1 变量2 read变量 n readn1FirstSecondThird 用户输入 echo n1FirstSecondThird readn1n2n3onetwothreefourfive 用户输入 echo n3threefourfive readn1n2First 用户输入 echo n2 echo命令将其后的参数在标准输入输出上输出 个参数间以空格隔开 以换行符终止 b光标退一个字符位置 c光标出现在参数的最后位置 f换页 r回车 t制表符 v垂直制表符 打印反斜线 echo Enterthefilename c 位置参数根据在命令行出现的位置次序来确定参数 0 1 2 9 其中 0对于命令名或shell脚本名setm1 cm2 c 将 1赋值为m1 c 2赋值为m2 c catm1 cmain printf begin n catm2 cmain printf OK n printf End n catex5 shellscripttocombinefilesandcountlinescat 1 2 3 4 5 6 7 8 9 wc l ex5m1 cm2 c7 catm1 cmain printf begin n catm2 cmain printf OK n printf End n catex6 shellscripttocombinefilesandcountlinessetm1 cm2 ccat 1 2 3 wc l ex610 移动位置参数shitn将位置参数左移n位 不包含 0 catex7echo 0 1 2 3 4 5 6 7 8 9shiftecho 0 1 2 3 4 5 6 7 8 9shit4echo 0 1 2 3 4 5 6 7 8 9 ex7ABCDEFGHIJKex7ABCDEFGHIex7BCDEFGHIJex7FGHIJK 预先定义的特殊变量 参数个数ex5m1 cm2 c 2 返回值 当前进程号 在后台运行的最后一个进程号 由当前shell设置的执行标志名组成的字符串 命令行中给出的所有位置参数字符串 与S 基本相同 表示位置参数为 f1 f2 f3 而 为 f1f2f3 set xv echodisplaycurrentshellflagsS echodisplaycurrentshellflagsxvdisplaycurrentshellflagsxv catex7echo echo 0 1 2 3 4 5 6 7 8 9shiftecho 0 1 2 3 4 5 6 7 8 9shit4echo 0 1 2 3 4 5 6 7 8 9echo ex7ABCDEFGHIJKABCDEFGHIJKex7ABCDEFGHIex7BCDEFGHIJex7FGHIJKFGHIJK 环境变量HOME用户注册主目录名cat HOME f1IFS内部字段分隔符MAIL用户存放信件的文件路径名PATH指定查找命令的路径PATH bin usr binPS1主提示符 PS2次提示符 SHELL当前shell的路径TERM终端的类型ansivt100HZ每秒时钟的中断次数TZ时区LOGNAME用户注册名MAILCHECK多长时间检查邮件是否到达MAILPATH表示各个邮箱路径 export语句与环境设置export语句export 变量名 myname MengQiangchang exportmyname catexample2myname LiuZhenying echo Mynameis myname example3 catexample3echo Mynameis myname example2MynameisLiuZhenyingMynameis MengQingchang profile设定和输出一些环境变量进入系统都要执行的命令 profile26 195 09 18 Copyright C 1989 1995TheSantaCruzOperation Inc profile commandsexecutedbyaloginBourneshellPATH PATH HOME binMAIL usr spool mail logname ExportPATHMAIL usedefaultsystemfilecreationmaskEval tset mansi TERM ansi m TERM ansi r s Q usr bin prwan 环境变量的设置和显示变量 值export和env printenv exportexportHOMEexportHZexportLOGNAMEexportTERM envEDITOR usr ucb viHOME usr mengHZ 100PATH bin etc usr bin tcb binSHELL bin shTERM ansiTZ CST 8 set命令显示迄今为止所定义的全部变量设定位置参数值 catsetposecho date set date echo 2 3 6echo 0 1 2 3 4 5 6 setposSunSep2816 48 46CST1997Sep281997setposSunSep2816 48 46CST1997 改变执行shell脚本时的选项设定set 标记参数 设置标记set 标记参数 关闭标记标记参数x在完成参数在各命令行中的替换并在执行该命令行之前 先显示该行内容 行首 v使shell对以后各个语句行都按原样先在屏幕上显示出来 然后才执行命令行 并显示结果 catex8set xecho currentshell set xset vecho currentshell ex8 currentshellxcurrentshellxcurrentshell currentshellv shell中的特殊字符 通配符 星号 f 匹配f f1 fa ff2 f file不匹配 file file etc c不匹配 etc目录下所有带后缀 c 的文件 etc c 问号 f 匹配f1 fa fb不匹配f fab f123 方括号 f abcd f a d 匹配fa fb fc fca abc只匹配a abc和a abc 感叹号 f 1 9 c 引号双引号由双引号括起来的字符 除 倒引号和反斜线 仍保留其特殊功能外 其余字符通常作为普通字符对待 catex9echo currentdirectoryis pwd echo homedirectoryis HOME echo file echo directory HOME ex9currentdirectoryis usr mengqc proghomedirectoryis usr mengqcfile directory usr mengqc 单引号单引号括起来的字符都作为普通字符出现倒引号倒引号括起来的字符串被shell解释为命令行 命令行的输出结果取代被倒引号引用的字符串 echo Thetimeis date thefileis HOME abc Thetimeis date thefileis HOME abc Nuser echoThenumberofusersis who wc l echo NuserThenumberofusersis5 输入输出重定向符可使shell改变某个命令的标准输入的来源及其标准输出的去处的各种方式 重定向输出符号 command argument filename重定向标准输入符号 dev null即时文件定向符command argument 标记符输入行标记符与文件描述字相关的重定向 catfile1file2file3 file4 catfile4File1contentFile2contentFile3content catorangeThisisorange catpear orange catorangeThisisorangeThisispear echo hithere dev null ls lmessage rw r r 1alexpubs25315Oct2410 55message cat dev null message ls lmessage rw r r 1alexpubs0Oct2411 05message mail 1 Bestwishtoyouonyourbirthday 管道某个命令的标准输出直接连接到其他命令的标准输入command a arguments command b arguments 等价于command a arguments tempcommand b arguments temprmtemp who sortalexpts 4Mar2712 23 0 0 alexpts 5Mar2712 33 0 0 Jennypts 7Mar2608 45 rootconsoleMar2705 00 0 过滤器过滤器是一种处理某个输入数据流以产生一个输出数据流的命令 who sort lp 在后台运行程序 command bg作业编号fg作业编号job显示作业编号 ls l lp 1 22092 requestidisprinter l 496 standardinput ls l more 1 22093 Stopped ttyoutput ls l more fg1 1 exit127ls l more 命令执行操作符顺序执行pwdwho wc lpwd who wc l逻辑与命令1 命令2cpex1ex10 rmex1逻辑或命令1 命令2cdabc pwd 成组命令 echo UserReportfor date who pr echo UserReportfor date who 中的命令不产生进程 产生新的子进程 a currentvalue exporta echo acurrentvalue a newvalue echo a newvalue echo acurrentvalue a newvalue echo a newvalue echo anewvalue 作业什么是shell脚本 列出执行shell脚本的3种方法 利用变量赋值方式 将字符串DOSfilec student 显示出来在shell中输入下列命令序列 将会有什么结果 name dateecho nameecho name echo name echo name echo name echo name echo name echo name 参数置换变量 一般形式变量2 变量1op字符串 变量2 变量2 字符串 catsam1echo PleaseenterTERM1 defaultansi c readterminalTREM1 terminal ansi echo terminaltypeis TERM1now sam1PleaseenterTERM1 defaultansi terminaltypenow ansi 回车 vt100 vt100 变量2 变量1 字符串 catsam2echo PleaseenterTERM2 defaultansi c readterminalTERM2 terminal ansi echo TERM2 TERM2 terminal terminal sam2PleaseenterTERM2 defaultansi TERM2 terminal ansi 回车 vt100 vt100 ansi vt100 变量2 变量1 字符串 catsam3echo PleaseenterTERM2 defaultansi c readterminalTERM2 terminal ansi echo TERM2 TERM2 terminal terminal sam3PleaseenterTERM2 defaultansi TERM2 terminal ansi 回车 vt100 变量2 变量1 字符串 catsam4echo PleaseenterTERM2 defaultansi c readterminalTERM2 terminal ansi echo TERM2 TERM2 terminal terminal sam4PleaseenterTERM2 defaultansi 回车 vt100 sam4 terminal ansi TERM2 vt100 terminal vt100 除使用操作符 外 其余格式中的变量1可以是位置参数 控制结构 if语句if测试条件或命令then命令else命令fi iftest f 1 thenecho 1isanordinaryfile elseecho 1isnotanordinaryfile fiiftest f 1 thenpr 1test d 1 then cd 1 pr elseecho 1isneitherafilenora directory fi elseif fi elif 测试语句test或 test f 1 或 f 1 有关文件方面的测试 r w x f d p s t 文件名 有关字符串方面的测试 zs1 ns1 s1 s1 s2 s1 s2 有关数值方面的测试n1 eqn2 n1 nen2 n1 ltn2 n1 len2 n2 gtn2 n1 gen2 逻辑操作符 a o a o a ge0 o b le100 a c eq10 特殊条件测试 不做任何事 其推出值为假true为真 0False为假 255 case语句case字符串in正则表达式1 命令 命令 正则表达式2 命令 命令 正则表达式n 命令 命令 esca case choiceintime date echo Thetimeis date dir path echo currentdirectoryis pwd echo badargument esac while语句while测试条件或命令do命令表done while 1 doif f 1 thenecho display 1 cat 1elseecho 1isnotafile name fishitdone echo keyinfilename c readfilenameecho keyindata whilereadxdoecho x filenamedonecat filename until语句until测试条件或命令do命令表done until 2 docp 1 2shit2doneif 1 thenecho badargument fi for语句for变量in值表do命令表done fordayinMondayWednesdayFridaydoecho daydone for变量in文件正则表达式do命令表done forfileinm cdocat file prdone forin 或者foridodo命令表命令表d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论