第5章 Shell编程.ppt
《第5章 Shell编程.ppt》由会员分享,可在线阅读,更多相关《第5章 Shell编程.ppt(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、11第5章Shell 进程与脚本Learning Objectives学习使用Linux流、管道、重定向.通过文本处理过滤器处理文本流编写简单的shell脚本Chapter 102Introduction本章我们将涉及到命令行解释程序 shells重定向标准 I/O管理和过滤Shell脚本Chapter 1035.1 命令解释程序ShellsLinux中都包括哪些shellShell是一个可以从终端输入行读入并执行命令的程序解释器Shell也是一种编程语言最早的shell出现在unix系统中,是Bourne shell.-sh在伯克利大学,Bill Joy 写了一个类似C语法的C shell.
2、-csh GNU Bourne-Again SHell(bash)由自由软件基金组织创建,它向后兼容Bourne shell,是大多数linux厂商的首选-bash还有一种扩展Extended C Shell(tcsh),是C shell的一种克隆。-tcshkorn shell-kshChapter 1045.2 输入输出命令5.2.1 标准输入输出每一个Linux命令都有3个与之相关的输入输出流。它们是:标准输入:代码为0,或称为stdin,使用方式为。错误输出:代码为2,或称为stderr,使用方式为2。Chapter 105在通常情况下,所有的3个默认的输入输出流都指向终端。stdin
3、就是从键盘上输入的字符送到标准输出的信息会显示在终端屏幕上送到标准错误输出的会显示在终端的屏幕Chapter 1065.2.2 重定向改变一个命令的标准输出到stdout#wc-l/etc/passwd filename大部分的linux命令将错误及诊断信息写入到stderr流中。stdout和stderr的默认连接都是终端的显示屏,但是它们还是不同的流。当重定向stdout后,stderr仍连接到终端,因而错误信息仍将显示在屏幕上。#ls dir2 lsfileChapter 107错误重定向#ls file123 2errs错误和标准输出一起定向#ls file123 2&1 out 输入
4、重定向#wc file;ll/etc/passwd file;ll/etc/passwd file;Chapter 108基本指令书写方式为:指令设备或文件 2 list.txt 2 list.errroot test root#ls al test 1 list.txt 2&1root test root#ls al test 1 list.txt 2 /dev/null有时经常使用/dev/null来作为存储文件。root test root#grep delegate /etc/*2/dev/nullChapter 109已存在文件当我们重定向时,命令解释程序会检查目标文件是否存在。如果
5、不存在,命令解释程序会根据给定的文件名创建一个空文件;如果文件已经存在,命令解释程序则会清除其内容并准备写入命令的输出结果。通过以下设置可以避免:#set -o noclobberChapter 10105.3 管道和过滤器5.3.1 管道$who tmpfile$wc -l dostxt-noMChapter 1017split指令语法root test root#split -bl 输入文件 输出文件前导字符参数说明-b:以文件size来分-l:以行数来分范例root test root#split l 5/etc/passwd testChapter 10185.4 脚本的执行与第一个脚
6、本脚本的执行执行步骤1.如果读取到一个Enter符号,就尝试开始执行该行命令;2.如同前面bash command提到的,指令间的多个空白会被忽略;3.空白行也将被忽略,并且Tab也不会被理会;4.如果一行内容太多,则可以使用延伸至下一行;5.此外,使用最多的#可做为注释。建立第一个脚本例子:屏幕上显示hello!How are you?vi test01-hello.sh#!/bin/bash#!/bin/bash#这个脚本的用途在于在屏幕上显示这个脚本的用途在于在屏幕上显示hellohello!How are you?How are you?#创建日期:创建日期:2002/05/20200
7、2/05/20#Written by VBird#Written by VBirdhello=Hello!How are you?hello=Hello!How are you?echo$helloecho$hellol lroot test test#sh test01-hello.shroot test test#sh test01-hello.sh第二个脚本变量引用#!/bin/bash#这个脚本的用于引用两个变量,顺便比较一下这个脚本的用于引用两个变量,顺便比较一下“与与的异同的异同#创建日期:创建日期:2002/06/27#Written by VBirdname=“V.Bird”m
8、yname1=“My name is$name”myname2=My name is$nameecho$nameecho$myname1echo$myname2l lroot test test#sh test02-var.shroot test test#sh test02-var.sh5.5 卷标与运算符declaredeclare语法root test test#declare -afirx 参数说明-a:定义为数组array-f:定义为函数function-i:定义为整数integer-r:定义为只读-x:定义为通过环境输出变量范例root test test#declare-i a=
9、3root test test#declare-i b=5root test test#declare-i c=$a*$broot test test#echo$c 计算结果中输入2*3+5*13-32+25,并且在最后输出Your result is,如何写这个脚本?#!/bin/bash#This program is used to“declare”variables#创建日期:创建日期:2002/06/27#Written by VBirdnumber1=2*3+5*13-32+25declare-i number2=2*3+5*13-32+25echo“Your result is$
10、number1”echo“Your result is$number2”l lroot test test#sh test03-declare.shroot test test#sh test03-declare.sh5.6 交互式脚本read指令功能:将键盘上输入的内容放到变量中。范例root test test#read nameroot test test#echo$name#!/bin/bash#This program is used to“read”variables#创建日期:创建日期:2002/06/27#Written by VBirdecho“Please key in y
11、our name,and press Enter to start.”read nameecho“This is your data=$name”l lroot test test#sh test04-read.shroot test test#sh test04-read.sh定义一个脚本的参数代号?root test test#myscript opt1 opt2 opt3 opt4$0$0$1$1$2$2$3$3$4$4案例#!/bin/bash#This program will define what is the parameters#创建日期:创建日期:2002/06/27#Wr
12、itten by VBirdecho“This scripts name=$0”echo“parameters$1$2$3”l lroot test test#sh test05-0123 pa1 pa2 pa3 root test test#sh test05-0123 pa1 pa2 pa3 5.7 脚本逻辑判断式与表达式逻辑判断式1.关于文件与目录的逻辑卷标逻辑卷标逻辑卷标逻辑卷标逻辑卷标含义含义含义含义-f-f常用常用常用常用!检测文件是否存在检测文件是否存在检测文件是否存在检测文件是否存在-d-d常用常用常用常用!检测文件是否存在检测文件是否存在检测文件是否存在检测文件是否存在-b-
13、b检测是否为一个检测是否为一个检测是否为一个检测是否为一个blockblock文件文件文件文件-c-c检测是否为一个检测是否为一个检测是否为一个检测是否为一个charactercharacter文件文件文件文件-S-S检测是否为一个检测是否为一个检测是否为一个检测是否为一个socketsocket文件文件文件文件-L-L检测是否为一个符号链接文件检测是否为一个符号链接文件检测是否为一个符号链接文件检测是否为一个符号链接文件-e-e检测某个东西是否存在检测某个东西是否存在检测某个东西是否存在检测某个东西是否存在!可以是任何东西可以是任何东西可以是任何东西可以是任何东西逻辑判断式2.关于程序的逻辑
14、卷标逻辑卷标逻辑卷标逻辑卷标逻辑卷标含含含含 义义义义-G-G检测是否由检测是否由检测是否由检测是否由GIDGID所执行的程序拥有所执行的程序拥有所执行的程序拥有所执行的程序拥有-O-O检测是否由检测是否由检测是否由检测是否由UIDUID所执行的程序拥有所执行的程序拥有所执行的程序拥有所执行的程序拥有-p-p检测是否为程序间传送信息的检测是否为程序间传送信息的检测是否为程序间传送信息的检测是否为程序间传送信息的name name pipepipe或或或或FIFOFIFO逻辑判断式3.关于文件的属性检测逻辑卷标逻辑卷标逻辑卷标逻辑卷标含义含义含义含义-r-r检测文件是否为可读属性检测文件是否为可
15、读属性检测文件是否为可读属性检测文件是否为可读属性-w-w检测文件是否为可写入属性检测文件是否为可写入属性检测文件是否为可写入属性检测文件是否为可写入属性-x-x检测文件是否为可执行属性检测文件是否为可执行属性检测文件是否为可执行属性检测文件是否为可执行属性-s-s检测文件是否为非空白文件检测文件是否为非空白文件检测文件是否为非空白文件检测文件是否为非空白文件-u-u检测文件是否具有检测文件是否具有检测文件是否具有检测文件是否具有SUIDSUID属性属性属性属性-g-g检测文件是否具有检测文件是否具有检测文件是否具有检测文件是否具有SGIDSGID属性属性属性属性-k-k检测文件是否具有检测文
16、件是否具有检测文件是否具有检测文件是否具有sticky bitsticky bit属性属性属性属性逻辑判断式4.两个文件之间的判断与比较逻辑卷标逻辑卷标逻辑卷标逻辑卷标含义含义含义含义-ntnt第一个文件比第二个文件新第一个文件比第二个文件新第一个文件比第二个文件新第一个文件比第二个文件新-otot第一个文件比第二个文件旧第一个文件比第二个文件旧第一个文件比第二个文件旧第一个文件比第二个文件旧-efef第一个文件与第二个文件为同一文件第一个文件与第二个文件为同一文件第一个文件与第二个文件为同一文件第一个文件与第二个文件为同一文件(诸如链接文件)(诸如链接文件)(诸如链接文件)(诸如链接文件)逻
17、辑判断式5.逻辑与(and)和或(or)逻辑卷标逻辑卷标逻辑卷标逻辑卷标含义含义含义含义&逻辑与逻辑与逻辑与逻辑与|逻辑或逻辑或逻辑或逻辑或运算符运算符运算符运算符运算符含义含义含义含义运算符运算符运算符运算符含义含义含义含义=等于等于等于等于-gtgt大于大于大于大于!=!=不等于不等于不等于不等于-le-le小于或等于小于或等于小于或等于小于或等于 大于大于大于大于-a-a双方都成立(双方都成立(双方都成立(双方都成立(amdamd)-eqeq等于等于等于等于-o-o单方成立(单方成立(单方成立(单方成立(oror)-nene不等于不等于不等于不等于-z-z空字符串空字符串空字符串空字符串
18、-lt lt小于小于小于小于-n-n非空字符串非空字符串非空字符串非空字符串5.8 条件判断ifthenfi语法:if 条件判断一&(|)条件判断二 ;thenelif 条件判断三&(|)条件判断四;thenelsefi案例一#!/bin/bash#This program is used to study if then#创建日期:创建日期:2002/06/27#Written by VBirdecho“Press y to continue.”read ynif “$yn”=“y”;thenecho “script is running.”elseecho“STOP!”fil lroot
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 Shell编程 Shell 编程
限制150内