Linux操作系统的应用与管理项目化教程课件项目十 shell编程_第1页
Linux操作系统的应用与管理项目化教程课件项目十 shell编程_第2页
Linux操作系统的应用与管理项目化教程课件项目十 shell编程_第3页
Linux操作系统的应用与管理项目化教程课件项目十 shell编程_第4页
Linux操作系统的应用与管理项目化教程课件项目十 shell编程_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

项目十shell编程【项目目标】了解shell环境变量了解shell的特殊控制字符了解shell的语法结构会编写简单的shell脚本会执行shell脚本【任务描述】设计一个Shell脚本,在/userdata目录下自动建立50个目录,即user1~user50,并设置每个目录的权限为rwxr-xr—设计一个Shell脚本,备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。10.1shell编程基础Shell脚本程序主要用于系统管理和文件操作,它能够方便自如地处理大量重复性的系统工作创建一个脚本程序必须以下面的行开始(必须方在文件的第一行):

#!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编辑好脚本时,如果要执行该脚本,还必须使其可执行。要使脚本可执行:

chmod+xfilename10.1shell编程基础例:#!/bin/bash#Myfirstscriptecho“helloworld!”10.1shell编程基础注释在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。变量在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量的方法为:变量名=值取出变量值可以加一个美元符号($)在变量前面。10.1shell编程基础例:#!/bin/bash#对变量赋值a="helloworld“#打印变量a的内容echo"Ais:"echo$a#!/bin/bashecho“enteryourname:readnameecho”yournameis$name”注意:有时候变量名很容易与其他文字混淆,比如:

num=2

echo"thisisthe$numnd“

这并不会打印出"thisisthe2nd",而仅仅打印"thisisthe",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量:

num=2

echo"thisisthe${num}nd“

这将打印:

thisisthe2nd10.1shell编程基础管道和重定向管道(|)将一个命令的输出作为另外一个命令的输入。

grep"hello"file.txt|wc–lwc–lfile:计算文件行数wc-wfile:计算文件中的单词数wc-cfile:计算文件中的字符数10.1shell编程基础

重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。>写入文件并覆盖旧文件。>>加到文件的尾部,保留旧文件内容。

10.2shell程序的变量和参数Shell有以下几种基本类型的变量:

(1)shell定义的环境变量

shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的shell环境变量有:

HOME:用于保存注册目录的完全路径名。

PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。10.2shell程序的变量和参数TERM:终端的类型。

UID:当前用户的标识符,取值是由数字构成的字符串。

PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。

PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。

PS2:在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时shell判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。10.2shell程序的变量和参数(2)用户定义的变量

语法规则:

变量名=变量值

要注意的一点是,在定义变量时,变量名前不应加符号“$”,在引用变量的内容时则应在变量名前加“$”;在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。

在编写shell程序时,为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。10.2shell程序的变量和参数(3)位置参数

$n这个程序的第n个参数值,n=1...9

当执行这个程序时的参数数目超过9个时,我们可以使用shift命令将参数往前移一格,如此即可使用第10个以后的参数。

$0是一个特殊的变量,它的内容是当前这个shell程序的文件名,所以,$0不是一个位置参数,在显示当前所有的位置参数时是不包括$0的。10.2shell程序的变量和参数(4)预定义变量

预定义变量和环境变量相类似,也是在shell一开始时就定义了的变量,所不同的是,用户只能根据shell的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的shell预定义变量有:$#传递给shellscript的参数个数

$*传递给shellscript的参数

$?上一个命令的返回代码其中,“$?”用于检查上一个命令执行是否正确(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)。10.2shell程序的变量和参数10.3shell程序设计的流程控制

和其他高级程序设计语言一样,shell提供了用来控制程序执行流程的命令,包括条件分支和循环结构,用户可以用这些命令建立非常复杂的程序。

与传统的语言不同的是,shell用于指定条件值的不是布尔表达式而是命令和字符串。

1.test测试命令

test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下:10.3shell程序设计的流程控制(1)数值测试:

-eq:等于则为真

-ne:不等于则为真

-gt:大于则为真

-ge:大于等于则为真

-lt:小于则为真

-le:小于等于则为真10.3shell程序设计的流程控制(2)字符串测试:

=:等于则为真

!=:不相等则为真

-z字符串:字符串长度为0字节则为真

-n字符串:字符串长度不为0字节则为真10.3shell程序设计的流程控制(3)文件测试:

-e文件名:如果文件存在则为真

-r文件名:如果文件存在且可读则为真

-w文件名:如果文件存在且可写则为真

-x文件名:如果文件存在且可执行则为真

-s文件名:如果文件存在且至少有一个字符则为真

-d文件名:如果文件存在且为目录则为真

-f文件名:如果文件存在且为普通文件则为真

-c文件名:如果文件存在且为字符型特殊文件则为真

-b文件名:如果文件存在且为块特殊文件则为真10.3shell程序设计的流程控制

另外,Linux还提供了与(“-a”)、或(“-o)、非(“!”)三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。10.3shell程序设计的流程控制2.if条件语句

shell程序中的条件分支是通过if条件语句来实现的,其一般格式为:

if[条件命令串];then

条件为真时的命令串

else

条件为假时的命令串

fi10.3shell程序设计的流程控制3.for循环

for循环的格式:

for变量名in值列表

do

若干个命令行

done

for循环每次为“变量名”分配一个“值列表”中的值。然后对于每个值,执行do和done之间的循环体。10.3shell程序设计的流程控制例1:forNUMBERin0123456789doechoThenumberis$NUMBERdone例2:forNAMEinJohnPaulGeorge;doecho$NAMEismyfrienddone10.3shell程序设计的流程控制4.while和until循环

while和until命令都是用命令的返回状态值来控制循环的。While循环的一般格式为:

while[条件]

do

若干个命令行

done

只要while的条件返回状态为真,while循环就继续执行do...done之间的“若干个命令行”。10.3shell程序设计的流程控制until命令是另一种循环结构,它和while命令相似,其格式如下:

until[条件]

do

若干个命令行

done

until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。10.3shell程序设计的流程控制例1:until[$#-eq0]Doecho"第一个参数为:

温馨提示

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

评论

0/150

提交评论