您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 第八章.SHell编程
红旗Linux软件技术学院------RCE课程之用户基础邮电:z_an_d@tom.com电话:13856036638第八章Shell编程教学内容:Shell的基本概念Shell编程基础Shell编程的语句Shell脚本的运行教学目标:了解shell的基本概念熟悉shell的变量掌握shell编程的常用语句和shell脚本的运行教学重点:shell编程的常用语句shell脚本的运行教学难点:shell功能的实现一.Shell的基本概念1.Linuxshell的特点便于开发新命令提高开发处理内置编程语言提供后台处理机制提供管道、命令替换、自动补齐机制2.Linuxshell的版本Bourneshell(Bshell):Unix的最初Shell,在Shell编程方面比较优秀。CShell(csh):在C语言编程方面性能较好BashShell(bash):BourneShell的增强版,Linux系统的默认ShellKornShell(ksh):综合BShell和CShell的特点于一身。Tcsh:CShell的增强版,具有命令行编程接口和历史记录功能3.Shell下的可执行文件内部命令Shell脚本外部命令二.BashShell编程基础1.Shell的变量和参数(1)变量的分类按变量作用域来分:全局变量,局部变量按用途划分:系统环境变量,位置参数,用户自定义变量(2)用户自定义变量变量名=值红旗Linux软件技术学院------RCE课程之用户基础邮电:z_an_d@tom.com电话:13856036638定义变量时,不用加’$’,但在引用变量值时必须加’$’可以使用export命令输出变量,使其成为全局变量可使用readonly命令,使变量成为只读变量可使用unset命令,取消命令的定义2.环境变量Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用环境变量如下:HISTFILE:历史记录文件的位置HISTSIZE:历史记录列表的大小HOME:用户主目录PATH:通用路径UID:用户的UIDPS1(PS2):一(二)级提示符TERM:终端类型SHELL:当前使用的Shell程序PWD:当前工作路径USER:当前登录名LANG:当前字符集注:env用于显示系统环境变量的值3.位置参数位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的$1,第二个替换$2,依次类推。$0是一个特殊的变量,它的内容是当前这个Shell程序的文件名,所以,$0不是一个位置参数,在显示当前所有的位置参数时是不包括$0的。4.预定义变量预定义变量和环境变量相类似,也是在Shell一开始时就定义了的变量。所不同的是,用户只能根据Shell的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的Shell预定义变量有:$#位置参数的数量。$*所有位置参数的内容。$?命令执行后返回的状态。$$当前进程的进程号。$!后台运行的最后一个进程号。$0当前执行的进程名。5.比较运算符(1)数值比较-eq等于则为真。-ne不等于则为真。-gt大于则为真。红旗Linux软件技术学院------RCE课程之用户基础邮电:z_an_d@tom.com电话:13856036638-ge大于等于则为真。-lt小于则为真。-le小于等于则为真。(2)字串测试:=等于则为真。!=不相等则为真。-z字串字串长度伪则为真。-n字串字串长度不伪则为真。(3)文件测试:-e文件名如果文件存在则为真。-r文件名如果文件存在且可读则为真。-w文件名如果文件存在且可写则为真。-x文件名如果文件存在且可执行则为真。-s文件名如果文件存在且至少有一个字符则为真。-d文件名如果文件存在且为目录则为真。-f文件名如果文件存在且为普通文件则为真。-c文件名如果文件存在且为字符型特殊文件则为真。-b文件名如果文件存在且为块特殊文件则为真。另外,Linux还提供了与(-a)、或(-o)、非(!)三个逻辑操作符,用于将测试条件连接起来,其优先顺序为:!最高,-a次之,-o最低。三.BashShell的常用语句1.echo功能:显示变量值/字符串格式:echo[参数]字符串参数:-n显示字符串且不换行,默认echo显示字符串之后立即换行实例:echo-n“abc”2.expr功能:计算表达式格式:expr表达式实例:expr10\*23.read功能:从键盘获取变量的值格式:read变量名实例:readareadbc=$a+$becho$c4.test功能:测试表达式的真假(等同于[])红旗Linux软件技术学院------RCE课程之用户基础邮电:z_an_d@tom.com电话:13856036638格式:test表达式5.if功能:条件分支选择格式:if条件表达式then条件为真时的命令串else条件为假时的命令串fi实例:if[-x/sbin/quotaon]then/sbin/quotaon–avugelseecho“quotaonnoexists.”fi6.case功能:多路分支格式:Case参数in值1)语句1;;值2)语句2;;、、、、、*)语句N;;esac实例:#vi/etc/quotaman#!/bin/bashcase“$1”instart)/sbin/quataon–avug;;stop)/sbin/quotaoff–avug;;restart)/sbin/quotaoff–avug红旗Linux软件技术学院------RCE课程之用户基础邮电:z_an_d@tom.com电话:13856036638/sbin/quotaon-avug;;*)echo“enterstart/stop/restart”;;esac7.for功能:循环执行多条语句格式:for参数[in字符串]do循环体done实例:foriin/bin/*doecho$idone8.while功能:实现条件循环,当条件为真时执行循环体格式:while〔条件/命令〕do循环体done实例:while[“$a”=“$b”]dosleep5done9.until功能:实现条件循环,当条件为假时执行循环体格式:until[条件/命令]do循环体done实例:myvar=0until[$myvar-eq10]doecho$myvar红旗Linux软件技术学院------RCE课程之用户基础邮电:z_an_d@tom.com电话:13856036638myvar=$(($myvar+1))done10.函数格式:〔function〕函数名(参数){函数体}实例:#!/bin/bashstart(){if[-x/sbin/quotaon]then/sbin/quotaon–avugfi}stop(){if[-x/sbin/quotaoff]then/sbin/quotaoff–avugfi}restart(){stopstart}case$1instart)start;;stop)stop;;restart)restart;;*)echo“error!!!!!!!”;;esac红旗Linux软件技术学院------RCE课程之用户基础邮电:z_an_d@tom.com电话:1385603663811.exit功能:退出脚本文件格式:exit(0或1)实例:if[-f/etc/sysconfig/network]then/etc/rcd/init.d/networkstartelseexit1fi12.break功能:退出循环格式:break13.continue功能:继续下一次循环格式:continue14.exec功能:调用其它命令,且不创建新进程格式:exec命令四.脚本的运行方式方式一:1.改变脚本文件的属性,让用户具有执行权#chmod权限值脚本文件2.运行脚本文件#路径/文件名[参数]实例:#/etc/rc.d/init.d/dhcpdrestart方式二:#Shell名称文件名实例:#bashabc
本文标题:第八章.SHell编程
链接地址:https://www.777doc.com/doc-2190558 .html