shell与其初级编程

上传人:第*** 文档编号:61706407 上传时间:2018-12-10 格式:PPT 页数:78 大小:1.56MB
返回 下载 相关 举报
shell与其初级编程_第1页
第1页 / 共78页
shell与其初级编程_第2页
第2页 / 共78页
shell与其初级编程_第3页
第3页 / 共78页
shell与其初级编程_第4页
第4页 / 共78页
shell与其初级编程_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《shell与其初级编程》由会员分享,可在线阅读,更多相关《shell与其初级编程(78页珍藏版)》请在金锄头文库上搜索。

1、1 Shell概述,第8讲 Shell及其编程,2 shell脚本,3 shell脚本变量,1 Shell概述,shell就是可以接受用户输入命令的程序。 shell隐藏了操作系统低层的细节。 Unix下的图形用户界面Gnome和KDE,有时也被叫做“虚拟shell”或“图形shell”。,Linux操作系统下的shell既是用户交互界面,也是控制系统的脚本语言。 在Linux系列操作系统下,shell是控制系统启动、X Window启动、和很多其他实用工具的脚本解释程序。,1.1 Bourne Shell,第一个标准Linux Shell是1970年底在V7 Unix(AT&T第 7版)中引

2、入,以其资助者Stephen Bourne的名字命名。 Bourne shell 是一个交换式的命令解释器和命令编程语言, 可以运行为login shell或者login shell的子shell 只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件 /etc/profile文件为所有用户定制环境,$HOME/.profile文件为本用户定制环境。shell读取用户输入。,1.2 C Shell,C Shell 是Bill Joy在上世纪80年代早期,在Berkeley的加利福尼亚

3、大学开发的。 目的是让用户更容易的使用交互式功能,并把ALGOL风格,适于数值计算的语法结构变成了C语言风格。 它新增了命令历史、别名、文件名替换、作业控制等功能,1.3 Korn Shell,在很长一段时间里,只有两类shell供选择,Bourne shell用来编程,C shell用来交互,AT&T贝尔实验室的David Korn开发了Korn shell。 ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。 新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。 Korn Shell 是一个交互式的命令解释器和

4、命令编程语言。它符合POSIX标准,1.4 Bourne Again Shell,Bourne Again Shell ,简称bash,1987年由布莱恩福克斯开发的。也是GNU计划的一部分,用来替代Bourne shell。bash是大多数类Unix系统以及Mac OS X v10.4默认的shell,被移植到多种系统中,bash的语法针对Bourne shell的不足做了很多扩展。 bash的命令语法很多来自Korn shell 和C shell 作为一个交互式的shell,按下TAB键即可自动补全已部分输入的程序名,文件名,变量名等等,1.5 查看用户shell,使用命令cat /etc

5、/shells来查看/bin/目录下Ubuntu支持的Shell echo $SHELL命令查看当前用户的shell 其他用户的shell,可以在/etc/passwd文件中看到,回目录,2 shell脚本,shell脚本是利用shell的功能所写的一个纯文本程序,将各类shell命令预先放入到一个文件中,方便一次性执行的一个程序文件,方便管理员进行设置或者管理。,shell脚本与Windows下的批处理相似,一个操作执行多个命令 shell script 提供了数组、循环、条件以及逻辑判断等功能,可以直接以shell来写程序,而不必使用类似C程序语言等传统程序编写的语法,2.2 执行shel

6、l脚本,1. Shell脚本执行过程,shell按照脚本中命令的出现的顺序,从上而下、从左而右地分析与执行,可以用“&”把一个脚本的执行放入后台,但是当脚本运行到最后是不会等待这个进程的返回结果,解决方法是在脚本最后放“ wait ”,任何加在#后面的数据将全部被视为批注文字而被忽略,2.2 执行shell脚本,2. Shell脚本执行方式,直接命令执行,sh/bash 选项 脚本名,source 脚本名,2.2 执行shell脚本,2. Shell脚本执行方式,直接命令执行,sh/bash 选项 脚本名,打开一个子shell读取并执行脚本中命令。该脚本文件可以没有“执行权限”。sh或bash

7、在执行脚本过程中,选项如下:,-n:不要执行script,仅检查语法的问题 -v:在执行script前,先将script的内容输出到屏幕上 -x:进入跟踪方式,显示所执行的每一条命令,并且在行首显示一个“+”号,2.2 执行shell脚本,2. Shell脚本执行方式,直接命令执行,sh/bash 选项 脚本名,source 脚本名,在当前bash环境下读取并执行脚本中命令 该脚本文件可以没有“执行权限” 通常用命令“.”来替代,回目录,3 shell脚本变量,shell脚本变量就是在shell脚本程序中保存,系统和用户所需要的各种各样的值。 shell脚本变量可以分为: 环境变量 系统变量

8、用户自定义变量,3.1 系统变量,Shell常用的系统变量并不多,在做一些参数检测的时候十分有用,3.1 系统变量,例:分析名为sysvar.sh脚本的运行结果。sysvar.sh脚本的代码如下:,#!/bin/sh #to explain the application of system variables. echo “$1 = $1 ; $2 = $2 “; echo “the number of parameter is $# “; echo “the return code of last command is $?“; echo “the script name is $0 “;

9、 echo “the parameters are $* “; echo “the parameters are $ “;,运行结果,#!/bin/sh #to explain the application of system variables. echo “$1 = $1 ; $2 = $2 “; echo “the number of parameter is $# “; echo “the return code of last command is $?“; echo “the script name is $0 “; echo “the parameters are $* “;

10、echo “the parameters are $ “;,3.2 环境变量,登入系统就获得一个shell它占据一个进程,输入的命令都属于这个shell进程的子进程,选择此shell后,获得一些环境设定,即环境变量。 环境变量约束用户行为,也帮助实现很多功能,包括主目录的变换、自定义显示符的提示方法、设定执行文件查找的路径等。,常用的环境变量,常用的环境变量,常用的环境变量,3.2 环境变量,例:使用env命令查看环境变量,并分析。 为了方便查看,使用重定向命令将环境变量存储到enviroment文件中,命令:env enviroment,然后使用编辑器打开该文件,3.2 环境变量,3.3 用

11、户自定义变量,例:哪些变量名是合法的 desk&123 456abc desk123 _abc1 _123 Add_99,用户定义的变量由字母、数字及下划线组成,变量名第一个字符不能为数字,变量名是大小写敏感的。 shell中的变量与c语言中的变量完全不同,不用声明即可使用,给变量赋值的同时也就声明了变量,3.4 变量的使用,引用变量时在变量名前面加上 $ 符号 输出变量时用 echo 如果变量恰巧包含在其他字符串中,为了区分变量和其他字符串,需要用 将变量名括起来,变量值的引用与输出,3.4 变量的使用,变量赋值的方式:变量名=值,2. 变量的赋值和替换,例: day=monday stri

12、ng=welcome!,注意:给变量赋值的时候,不能在“=”两边留空格,3.4 变量的使用,重置就相当于赋给这个变量另外一个值 清空某一变量的值可以使用unset命令,2. 变量的赋值和替换,变量可以有条件的替换,替换条件放在一对大括号中 $variable:-value,3.4 变量的使用,2. 变量的赋值和替换,第二种替换:变量为空时替换,而且变量的值会发生改变 $variable:=value,3.4 变量的使用,2. 变量的赋值和替换,第三种替换:只有当变量已赋值时才用指定值替换$variable: +value,3.5 数字与数组的声明和使用,1.数字与数组的声明,shell中默认的

13、赋值是对字符串赋值,对数字或数组进行声明,则要使用到declare命令,3.5 数字与数组的声明和使用,1. 数字与数组的声明,declare命令的格式: declare +/- 选项 variable,+/-:指定或关闭变量的属性 a:定义后面名为variable的变量为数组(array)类型 i:定义后面名为variable的变量为整数数字(integer)类型 x:将后面的variable变成环境变量 r:将变量设置成readonly类型 f:将后面的variable定义为函数,3.5 数字与数组的声明和使用,2. 数组的使用,数组下标cong0开始,范围没有限制,不必使用连续分量,na

14、me = (value1 . valuen) /此时下标从0开始 nameindex = value /index为下标,从0开始,例:对数组进行声明并赋值 declare -a name=(a b c d e f ) /此时数组下标从0开始 name0=A /将第一个元素a修改为A name9=j /将第10个元素赋值为j,3.5 数字与数组的声明和使用,2. 数组的使用,取数组中的元素的时候,语法形式如下: echo $arrayindex 如果想要取数组的全部元素,则要使用: echo $array,3.6 shell的输入/输出,1. echo输出命令,使用echo可以输出文本或变量到

15、标准输出,或者把字符串输入到文件中,它的一般形式为: echo 选项 字符串,选项:-n:输出后不自动换行 -e:启用“”字符的转换。,3.6 shell的输入/输出,-e:启用“”字符的转换,a 发出警告声 b 删除前一个字符 c 最后不加上换行符号 f 换行但光标仍旧停留在原来的位置 n 换行且光标移至行首 r 光标移至行首,但不换行 t 插入tab v 与f相同 插入字符 x 插入十六进制数所代表的ASCII字符,3.6 shell的输入/输出,1. echo输出命令,例:不换行输出字符“hello world!”,例:t和n的应用,例:x的应用,3.6 shell的输入/输出,2. r

16、ead输入命令,使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量,如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直到遇到第一个文件结束符或回车,一般形式为: read variable1 variable2,shell用空格作为多个变量之间的分隔符 shell将输入文本域超长部分赋予最后一个变量,3.6 shell的输入/输出,2. read输入命令,例:使用read语句为name、sex、age三个变量分别赋值:rose、female、30,3.7 运算符和特殊字符,1. 运算符,3.7 运算符和特殊字符,3.7 运算符和特殊字符,例:创建/home/ycs/abc/test文件 (不管其是否存在),1. 运算符,3.7 运算符和特殊字符,2. 特殊字符

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号