信创Linux操作系统管理(统信UOS版)项目七 shell编程.pptx
项目七Shell编程;【项目场景】
小明负责所在公司的服务器运维工作,在工作中需要涉及服务器上的任务部署,为了避免人为因素导致误操作,并且在遇到故障时可以方便复盘,决定使用Shell脚本的方式来控制质量。
【项目目标】
知识目标
知道Shell是什么
知道变量和环境变量
知道Shell有哪些基本语句
技能目标
学会设置环境变量
学会使用shell语句实现功能
素质目标
具有主动学习知识的意识
具有发现问题、分析问题和解决问题的能力
具有较强的团队协作能力
培养精益求精、密益求密的工作态度
培养认真负责、善于思考总结的工作作风
;主要内容;任务一Shell脚本概述;Shell是操作系统的最外层,可以合并编程语言来控制进程和文件,是负责User与LinuxOS之间沟通的桥梁,如图所示。它为用户提供一个操作界面,User在这个界面输入指令,其实就是通过Shell向LinuxKernel传递过去,因此Shell也叫解释器。
;1.管道
两个或多个进程之间需要通信时,由于它们拥有自己的地址空间,因此必须有一块公共的空间,而这块空间就需要内核提供,也就是缓冲区。
管道有两端,分别负责输入和输出,因此管道用于连接两个进程。进程1将数据输入缓冲区,进程2将缓冲区的数据取出来,从而实现两个进程的通信。
管道的符号是“|”,其使用方法如下:
$ls-l/dev|wc-l #统计系统设备目录dev下的文件和目录数量
$cat/etc/passwd|greproot:|wc-l#统计文件/ect/passwd内包含root的行数
;2.tee命令
tee命令输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建文件;如果文件已经存在,则默认覆盖,其命令格式如下:
tee[-a][files]
(1)-a:指定追加方式,默认采用覆盖的方式;
(2)-i:用于无法中断命令(Ctrl+C)。
tee命令的使用示例如下:
$cal|teecalendar #将当月日历表显示到屏幕上,同时保存到calendar
$ls/|teef1f2
;3.引号机制与变量替换
在Shell用三类引号:单引号(’)、双引号(”)和反单引号(`),单引号和双引号用于变量定义,反单引号用于命令替换。
(1)单引号引用的字符为普通字符,特殊字符??单引号引用会失去原来的意义。
$string=$PATH 定义string变量并赋值
$echo$string 显示变量值:’$PATH’
(2)反向单引号的作用是命令替换。命令替换是指执行反单引号内的命令,并将执行结果返回。
$?echoIam`whoami`andworkingin`pwd`输出?I?amrootand?working?in?/root
(3)双引号用来定义变量,与单引号不同之处在于在双引号中间可以进行变量替换和命令替换。双引号内的特殊字符仍具有特殊意义。
$myname=`whoami` #通过命令替换定义变量myname
##定义变量myself。注意使用了变量替换和命令替换
$myself=Iamastudent,myunameis$mynameandmyworkis`pwd`
$myself2=Iamastudent,myunameis\$myname\andmyworkis\`pwd`\
echomyself
echomyself2
;6.特殊字符
Shell中除了可以使用普通键盘输入的字符,还有一些具有特殊含义和功能的特殊字符。在使用它们时,应注意其特殊的含义和作用范围。
1)白空格
在统信UOS系统中,空格和Tab被称为白空格(WhiteSpace),主要用于命令行中命令名、参数及选项的分隔。在特殊情况下,白空格中也可包含回车字符。
2)通配符
通配符是路径扩展(英文pathnameexpansion,或者是文件名扩展(filenameexpansion))功能中的模式匹配(patternmatching)功能,比如文件名配对、路径名搜索、字符串查找等。常用的通配符有“*”,“?”和括在方括号“[set]”中的字符集合。;;二、Shell命令
1.命令格式
用户登录系统后,在字符界面下可以看到一个Shell的提示符,用户可以在提示符后面输入命令和参数。例如
$date
$date-u
在命令行中必须先输入一个命令名,后面的内容则为分隔符隔开的选项或参数。