第八章.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系统的默认ShellKornShell(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:用户的UIDPS1(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

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功