项目十 shell编程_第1页
项目十 shell编程_第2页
项目十 shell编程_第3页
项目十 shell编程_第4页
项目十 shell编程_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、Linux操作系统应用项目十 shell编程 Linux操作系统应用http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ / http:/ http:/ http:/ http:/ http:/ htt

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

3、系统工作 创建一个脚本 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行: chmod +x filenameLinux操作系统应用10.1shell编程基础 例: #!/bin/bash #My first script echo “hello world!”Linux操作系统应用10.1shell编程基础 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。 变量 在shell编程

4、中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量的方法为: 变量名=值 取出变量值可以加一个美元符号($)在变量前面。Linux操作系统应用10.1shell编程基础 例: #!/bin/bash #对变量赋值 a=hello world“ # 打印变量a的内容 echo A is:echo $a#!/bin/bashecho “enter your name:read nameecho ”your name is $name”Linux操作系统应用 注意: 有时候变量名很容易与其他文字混淆,比如: num=2 echo this is the $numnd“ 这并不会

5、打印出this is the 2nd,而仅仅打印this is the ,因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量: num=2 echo this is the $numnd“ 这将打印: this is the 2nd Linux操作系统应用10.1shell编程基础 管道和重定向 管道 (|) 将一个命令的输出作为另外一个命令的输入。 grep hello file.txt | wc lwc l file:计算文件行数:计算文件行数 wc -w file:计算文件中的单词数:计算文件中的单词数 wc -c f

6、ile: 计算文件中的字符数计算文件中的字符数 Linux操作系统应用10.1shell编程基础 重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。 写入文件并覆盖旧文件。 加到文件的尾部,保留旧文件内容。 Linux操作系统应用10.2 shell程序的变量和参数 Shell有以下几种基本类型的变量: (1)shell定义的环境变量 shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的shell环境变量有: HOME:用于保存注册目录的完全路径名。 PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目

7、录,找到的第一个与命令名称一致的可执行文件将被执行。 Linux操作系统应用10.2 shell程序的变量和参数 TERM:终端的类型。 UID:当前用户的标识符,取值是由数字构成的字符串。 PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。 PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。 PS2:在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“”然后回车,或者当用户按回车键时shell判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“”。Linux操作系

8、统应用10.2 shell程序的变量和参数 (2)用户定义的变量 语法规则:变量名=变量值 要注意的一点是,在定义变量时,变量名前不应加符号“$”,在引用变量的内容时则应在变量名前加“$”;在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。在编写shell程序时,为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。 Linux操作系统应用10.2 shell程序的变量和参数 (3)位置参数 $n 这个程序的第n个参数值,n=1.9 当执行这个程序时的参数数目超过9个时,我们可以使用shift命令将参数往前移一格,如此即可使用第10个以

9、后的参数。 $0是一个特殊的变量,它的内容是当前这个shell程序的文件名,所以,$0不是一个位置参数,在显示当前所有的位置参数时是不包括$0的。Linux操作系统应用10.2 shell程序的变量和参数 (4)预定义变量 预定义变量和环境变量相类似,也是在shell一开始时就定义了的变量,所不同的是,用户只能根据shell的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的shell预定义变量有: Linux操作系统应用 $# 传递给shell script的参数个数 $* 传递给shell script的参数 $? 上一个命令的返回代码 其中,“$?”用

10、于检查上一个命令执行是否正确(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)。 10.2 shell程序的变量和参数Linux操作系统应用http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www

11、.51/ http:/ http:/ http:/ http:/ http:/ http:/ shell程序设计的流程控制 和其他高级程序设计语言一样,shell提供了用来控制程序执行流程的命令,包括条件分支和循环结构,用户可以用这些命令建立非常复杂的程序。 与传统的语言不同的是,shell用于指定条件值的不是布尔表达式而是命令和字符串。 1.test测试命令 test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下: Linux操作系统应用10.3 shell程序设计的流程控制 (1)数值测试: -eq:等于则为真 -ne:不

12、等于则为真 -gt:大于则为真 -ge:大于等于则为真 -lt:小于则为真 -le:小于等于则为真 Linux操作系统应用10.3 shell程序设计的流程控制(2)字符串测试: =:等于则为真 !=:不相等则为真 -z字符串:字符串长度为0字节则为真 -n字符串:字符串长度不为0字节则为真 Linux操作系统应用10.3 shell程序设计的流程控制 (3)文件测试: -e文件名:如果文件存在则为真 -r文件名:如果文件存在且可读则为真 -w文件名:如果文件存在且可写则为真 -x文件名:如果文件存在且可执行则为真 -s文件名:如果文件存在且至少有一个字符则为真 -d文件名:如果文件存在且为目

13、录则为真 -f文件名:如果文件存在且为普通文件则为真 -c文件名:如果文件存在且为字符型特殊文件则为真 -b文件名:如果文件存在且为块特殊文件则为真 Linux操作系统应用10.3 shell程序设计的流程控制 另外,Linux还提供了与(“-a”)、或(“-o)、非(“!”)三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。 Linux操作系统应用10.3 shell程序设计的流程控制 2.if条件语句 shell程序中的条件分支是通过if条件语句来实现的,其一般格式为: if 条件命令串 ; then 条件为真时的命令串 else 条件为假时的命令串

14、 fi Linux操作系统应用10.3 shell程序设计的流程控制 3.for循环 for循环的格式: for 变量名 in 值列表 do 若干个命令行 done for循环每次为“变量名”分配一个“值列表”中的值。然后对于每个值,执行do和done之间的循环体。 Linux操作系统应用10.3 shell程序设计的流程控制 例1:for NUMBER in 0 1 2 3 4 5 6 7 8 9do echo The number is $NUMBERdone 例2:for NAME in John Paul George ; doecho $NAME is my frienddoneLi

15、nux操作系统应用10.3 shell程序设计的流程控制 4.while和until循环 while和until命令都是用命令的返回状态值来控制循环的。While循环的一般格式为: while 条件 do 若干个命令行 done 只要while的条件返回状态为真,while循环就继续执行do.done之间的“若干个命令行”。Linux操作系统应用10.3 shell程序设计的流程控制 until命令是另一种循环结构,它和while命令相似,其格式如下: until 条件 do 若干个命令行 done until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until

16、则是在条件为假时继续执行循环。 Linux操作系统应用http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ / http:/ http:/ http:/ http:/ http:/ http:/ shell程序设计的流程控制

温馨提示

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

评论

0/150

提交评论