您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Linux基础-脚本编程
上嵌网院讲师:杨行系列课程—Linux基础Shell脚本编程第五章上嵌网院课程目标具备搭建linux系统平台能力•系统安装具备Linux系统日常维护能力•文件,目录结构•linux的常用命令,Vi•Shell脚本编程、管道及其重定向•tftp,nfs服务器的配置熟悉Linux系统下的开发环境•Gcc,Gdb上嵌网院课程安排第一天上午:Linux系统简介和安装下午:Linux安装实际演练第二天上午:Linux基本操作命令下午:Linux基本操作命令实战第三天上午:Linux进程操作下午:Linux服务器配置第四天上午:Linux脚本编程上下午:Linux脚本编程下第五天上午:源代码编译和调试下午:多模块软件的编译和链接(预科内容,根据实际情况调整授课天数,4-10天)上嵌课前提问Shell编程的基本步骤什么?Shell变量有几种类型?位置变量起什么作用?Shell控制语句?Shell函数?Shell调试方法?上嵌本章目标Shell基础Shell变量及环境变量Shell测试语句Shell控制语句Shell函数Shell调试方法上嵌管道与重定向•标准输入输出•重定向操作•管道操作上嵌重定向操作类别操作符说明输入重定向输入重定向是将命令中接收输入的途径由默认的键盘更改(重定向)为指定的文件输出重定向将命令的执行结果重定向输出到指定的文件中,命令进行输出重定向后执行结果将不显示在屏幕上将命令执行的结果重定向并追加到指定文件的末尾保存错误重定向2清空指定文件的内容,并保存标准错误输出的内容到指定文件中2向指定文件中追加命令的错误输出,而不覆盖文件中的原有内容输出与错误组合重定向&将标准输出与错误输出的内容全部重定向到指定文件重定向操作演示演示上嵌输入\输出重定向实例•输入重定向–#wc–#wc/etc/passwd•将命令输出重定向到文件–将标准输出重定向到文件$ls/etc/etcdir–将标准输出重定向追加到文件$ls/etc/sysconfig/etcdir–将错误输出重定向到文件$nocmd2errfile–将标准输出和错误输出重定向到文件$lsafilebfile&errfile上嵌管道的使用•管道操作符|•“|”符用于连接左右两个命令,将“|”左边的命令执行结果(输出)作为“|”右边命令的输入cmd1|cmd2•在同一条命令中可以使用多个“|”符连接多条命令cmd1|cmd2|...|cmdn管道的使用演示演示上嵌•编译型语言•解释型语言–Shell脚本语言是解释型语言–Shell脚本的本质:•Shell命令的有序集合。知识点2-Shell脚本基础上嵌基本过程分为三步:Step1.建立shell文件包含任意多行操作系统命令或shell命令的文本文件;Step2.赋予shell文件执行权限用chmod命令修改权限;Step3.执行shell文件直接在命令行上调用shell程序.Shell脚本基础上嵌建立shell文件(可用任何建立文本文件的方法)$catprog1who|grep$1Step2:赋予执行权限:(初始文本文件无执行权限)$chmod740prog1Step3:执行该shell程序$prog1wdlprog1:notfound(shell在标准搜索目录中找不到prog1命令)Step4:指定路径或修改环境变量PATH后执行shell程序$./prog1wdlwdltty06Feb809:12Shell脚本基础实例上嵌•Shell允许用户建立变量存储数据,但不支持数据类型(整型、字符、浮点型),将任何赋给变量的值都解释为一串字符Variable=value•命名规则同C++中的命名规则•count=1•Echo$count•DATE=`date`•Echo$DATE知识点3-Shell脚本变量上嵌•BourneShell有如下四种变量:–用户自定义变量–位置变量即shellscript之参数–预定义变量(特殊变量)–环境变量Shell脚本变量上嵌•在shell编程中通常使用全大写变量,方便识别–$COUNT=1•变量的调用:在变量前加$–$echo$HOME•LinuxShell/bash从右向左赋值–$Y=y–$X=$Y–$echo$X–y•使用unset命令删除变量的赋值–$Z=hello–$echo$Z–hello–$unsetZ–$echo$ZShell脚本变量-自定义变量上嵌•$0与键入的命令行一样,包含脚本文件名•$1,$2,……$9分别包含第一个到第九个命令行参数•$#包含命令行参数的个数•$@包含所有命令行参数:“$1,$2,……$9”•$?包含前一个命令的退出状态•$*包含所有命令行参数:“$1,$2,……$9”•$$包含正在执行进程的ID号Shell脚本变量-位置变量上嵌•CDPATH:用于cd命令的查找路径•HOME:/etc/passwd文件中列出的用户主目录•IFS:InternalFieldSeparator,默认为空格,tab及换行符•MAIL:/var/mail/$USERNAMEmail等程序使用•PATH:路径•PS1,PS2:默认提示符($)及换行提示符()•TERM:终端类型,常用的有vt100,ansi,vt200,xterm等Shell脚本变量-环境变量上嵌语句包括三大类:功能性语句、结构性语句和说明性语句.说明性语句:以#号开始到行尾的部分,不被解释执行功能性语句:任意的操作系统命令、shell内部命令、自编程序、其它shell程序名等。结构性语句:条件测试语句、多路分支语句、循环语句、循环控制语句等。知识点4-Shell程序和语句上嵌注释行可以出现在程序中的任何位置,既可以单独占用一行,也可以接在执行语句的后面.以#号开始到所在行的行尾部分,都不被解释执行.例如:#!/bin/sh##本程序说明#command_1command_2#command_2的语句说明……#下面程序段的说明command_m……command_n#commandn_语句的说明……告诉OS用哪种类型的shell来解释执行该程序说明性语句上嵌从标准输入读入一行,并赋值给后面的变量,其语法为:.readvar把读入的数据全部赋给var.readvar1var2var3把读入行中的第一个词(word)赋给var1,第二个词赋给var2,……把其余所有的词赋给最后一个变量.如果执行read语句时标准输入无数据,则程序在此停留等侯,直到数据的到来或被中止运行。Shell程序和语句上嵌:\creadusernameechoYournameis$username#example2forreadechoInputdatewithformatyyyymmdd:\creadyearmonthdayechoTodayis$year/$month/$day,right?echoPressanykeytoconfirmandcontinue\creadanswerechoIknowthedate,bye!Shell程序和语句实例上嵌主要用于进行简单的整数运算,包括加(+)、减(-)、乘(\*)、整除(/)和求模(%)等操作。例如:$expr12+5\*327$expr3-8/2-1$expr25%41$num=9$sum=`expr$num\*6`$echo$sum54反斜线去掉*号的元字符含义反撇号引用命令的运行结果Shell程序和语句上嵌语句可测试三种对象:字符串整数文件属性每种测试对象都有若干测试操作符例如:test$answer=yes变量answer的值是否为字符串yestest$num–eq18变量num的值是否为整数18test-dtmp测试tmp是否为一个目录名Shell程序和语句上嵌•-dname测试name是否为一个目录•-fname测试name是否为普通文件•-Lname测试name是否为符号链接•-rname测试name文件是否存在且为可读•-wname测试name文件是否存在且为可写•-xname测试name文件是否存在且为可执行•-sname测试name文件是否存在且其长度不为0•f1-ntf2测试f1是否比f2更新•f1-otf2测试f1是否比f2更旧Shell程序和语句-文件测试上嵌•s1=s2测试两个字符串的内容是否完全一样•s1!=s2测试两个字符串的内容是否有差异•-zs1测试s1字符串的长度是否为0•-ns1测试s1字符串的长度是否不为0Shell程序和语句-字符串测试上嵌•a-eqb测试a与b是否相等•a-neb测试a与b是否不相等•a-gtb测试a是否大于b•a-geb测试a是否大于等于b•a-ltb测试a是否小于b•a-leb测试a是否小于等于bShell程序和语句-整数测试上嵌命令主要用于设置终端工作模式,或读出终端控制字符.tput命令与终端控制代码数据库terminfo相连,根据shell环境变量TERM的值,读出这种终端的指定功能控制代码.常用的终端功能控制如下表:关闭所有属性sgr0光标位置到屏幕底清屏ed反白显示rev显示变暗dim结束下划线模式rmul光标移到r行c列cuprc结束突出显示模式rmso清屏clear启动下划线模式smul粗体字显示bold启动突出显示模式smso闪烁显示blink光标位置到行末清字符el终端响铃bel功能选项功能选项知识点5-Shell程序和语句上嵌应用实例一:##program1fortput#tputcleartputcup1130tputrevechoHello,everybody!tputsgr0tputcup241该程序先清屏,并在屏幕中央位置(11行23列)用反极性显示字符串Hello,everybody!,恢复正常显示极性后光标停留在屏幕左下角.Shell程序和语句上嵌应用实例二:#program2fortput#bell=`tputbel`s_uline=`tputsmul`e_uline=`tputrmul`tputcleartputcup1020echo$bell$s_ulineechoComputerDepart
本文标题:Linux基础-脚本编程
链接地址:https://www.777doc.com/doc-7534561 .html