linux基础3-shell

上传人:xh****66 文档编号:61934688 上传时间:2018-12-15 格式:PPT 页数:48 大小:604KB
返回 下载 相关 举报
linux基础3-shell_第1页
第1页 / 共48页
linux基础3-shell_第2页
第2页 / 共48页
linux基础3-shell_第3页
第3页 / 共48页
linux基础3-shell_第4页
第4页 / 共48页
linux基础3-shell_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《linux基础3-shell》由会员分享,可在线阅读,更多相关《linux基础3-shell(48页珍藏版)》请在金锄头文库上搜索。

1、1,Linux基础- Shell编程,2,主要内容,Shell的作用 Shell程序的编辑和运行 基于Bash的Shell程序设计 变量声明 表达式 条件判断 控制结构 参数访问,3,Shell的作用,shell是用户和系统内核之间的接口程序 Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。 为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。 使用较广的shell有标准的Bourne shell (sh)

2、、Korn Shell(ksh)、C shell (csh)、Bourne Again Shell(bash)等。 查看当前环境所用shell:echo $SHELL shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。 本质上,shell 脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的。它接收用户命令,然后调用相应的应用程序。,4,linux下的s

3、hell,用户使用shell的设定 通过查看/etc/passwd文件可以查看用户使用的shell类型 例子: /etc/passwd部分节选,webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38:/etc/ntp:/sbin/nologin gdm:x:42:42:/var/gdm:/sbin/nologin htt:x:100:101:IIIMF Htt:/usr/lib/im:/sbin/nologin

4、 tom:x:500:500:tom:/home/tom:/bin/bash #可见,tom用户使用的shell为bash,5,linux下的shell,linux下的shell 通过cat /ect/shells命令查看安装的shell,6,shell程序,Shell程序的特点及用途: shell程序可以认为是将shell命令按照控制结构组织到一个文本文件中,批量的交给shell去执行 不同的shell解释器使用不同的shell命令语法 shell程序解释执行,不生成可以执行的二进制文件 可以帮助用户完成特定的任务,提高使用、维护系统的效率 了解shell程序可以更好的配置和使用linux,

5、7,基于bash的shell程序,8,基于bash的shell程序,程序编译和运行过程 一般步骤: 编辑文件 保存文件 将文件赋予可以执行的权限 运行及排错 常用到的命令: vi,编辑、保存文件 ls -l 查看文件权限 chmod 改变程序执行权限 直接键入文件名运行文件,9,shell程序的编辑和执行,10,shell程序设计,一般结构 shell类型 函数 主过程,#!/bin/bash function fun1() funciton funn() . . . . . . .,函数定义,shell类型,主过程,11,变量的声明和使用,变量的声明和使用 变量是弱类型的 声明变量不用声明类

6、型 可以存储不同类型的内容 使用灵活 使用时要明确变量的类型 大小写区分 变量声明及赋值格式 格式: 变量值 (注意:等号两侧不能有空格) 例如: a=”hello ” b=9,12,变量的声明和使用,变量的引用 格式: $变量名,或者$变量名 变量名为一个字符用方式一,变量名多于一个字符建议用第2种方式 例子: a=1 abc=“hello“ echo $a echo $abc,13,常用的运算符,整数的算术运算符 +、*、/、%; 赋值运算符 、*、/、 位运算符 、&、|、; 位运算赋值运算符 、&、|、; 逻辑运算符: &,|,!,!,,14,简单数学表达式,expr命令计算一个表达式

7、的值 格式 :expr arg Expr 3 + 2 例子:计算(23)4的值 1、分步计算,即先计算23,再对其和乘4 s=expr 2 + 3 expr $s * 4 2、一步完成计算: expr expr 2 + 3 * 4 说明: 运算符号和参数之间要有空格分开; 通配符号(*),在作为乘法运算符时要用、“”、符号修饰 是ESC键下面的符号,不是单引号,15,简单数学表达式,let命令 格式:let arg1 arg2 例子:计算(23)4的值 let s=(2+3)*4 说明: 与expr命令相比,let命令更简洁直观 当运算符中有、&、|等符号时,同样需要用引号(单引号、双引号)或

8、者斜杠来修饰运算符,16,命令文件,Shell程序可以直接从终端上键入,如: $ who | wc -l 也可以先把程序键入一个文件,然后由shell执行该文件 应用示例: 建立文件nu,通过执行该文件完成以上命令的功能 要以这种方式执行程序,需要有执行权限, 可以利用chmod命令完成: chmod +x nu 执行:./nu,17,变量,与所有的编程语言一样,shell也允许把值存在变量中,shell变量名以字母或下划线字符开始,由字母、数字或下划线组成 要把值存入变量,只要写出变量名,或紧跟一个=,再加变量值即可 例如:variable=value count=1 可以利用echo命令查

9、看变量值 例如:echo $variable echo count,18,环境变量,环境变量是一种特殊的变量,其特点为: 它们可以由其他程序传递给脚本 在脚本中被调用的任何程序都将继承环境变量 可以像定义一个变量一样来设置环境变量,在标记它为环境变量时需要使用“ export ”命令 应用示例: $ export MYENV=1 $ echo $MYENV 使用“ set ”命令可以获取当前上下文中全部的变量,19,特殊变量,bash中存在着一些拥有特殊用途的变量,我们称这种变量为特殊变量。其中一些变量可以让用户初始化,并让bash按照特殊的方式运行;还有一些变量虽然对bash没有什么特殊的含

10、义,但是对系统程序很重要。例如:PATH变量是Linux系统中执行命令时所搜索的路径,它是由系统初始化的。一般它的值为:/bin:/sbin:/usr/bin:/usr/sbin。 最常用的是位置变量,用来存储bash脚本程序名后面的参数。Linux系统中的启动脚本和关闭脚本使用了大量的参数。其中第一个参数保存在变量1中,可利用$1引用,第二个参数存储在变量2中,可利用$2引用,以此类推。,20,bash中的引号,在bash编程中,引号的使用十分灵活。不同种类的引号具有不同的含义。bash把单引号、双引号和反斜杠()都用作转意字符。 在这3种符号中,单引号的功能最强。用单引号将一个字符串括起来

11、可以屏蔽其中所有的特殊字符。例如:如希望把$1中的$当作货币符号赋给变量tax,应采用如下形式的语句: $ tax=$1,21,bash中的引号(二),Linux双引号的作用与单引号差不多,区别在于双引号没有那么严格,单引号忽略所有特殊字符,双引号只忽略大多数,不忽略以下三种符号: 美元符号 反引号 反斜杠() 反斜杠一次只能让单个字符转义,不能操作整个字符串。它的屏蔽能力与单引号相当。下面的例子中: $ string=all right 反斜杠可以让bash忽略all后的空格,这样string接收到的将是一个单词all right。,22,命令替换,命令替换是指shell将一个命令的标准输出

12、插在一个命令行中任何位置的功能,有两种命令替换方法: 反引号 command $( command) 结构 应用示例: $ echo the date and time is : date $ echo You are working in pwd,23,参数传递,通过参数传递shell程序可以从命令行接收参数,用途更加强大。下面介绍三种与参数传递有关的变量 位置参数 ($1、$2) Shell程序执行时自动把第一个参数放在一个特殊的变量1中,以此类推,2,3等参数放在变量2、3中 应用示例:编辑ison文件内容如下: who | grep $1 执行:$ chmod +x ison $ ./

13、ison bc shell将用bc代替$1,命令行变为:who | grep bc,24,参数传递(二),$# 变量 用于存放命令行中所键入的参数个数 shell程序测试这个变量确定用户输入的参数个数是否正确 应用示例:编辑args文件内容如下: echo $# arguments passed echo arg 1= :$1: arg 2 =:$2: arg 3 =:$3: 执行: $ args a b c $ args a b $ args 从这个例子可以看到shell程序将命令行的参数个数传递给了$#变量,25,参数传递(三),$* 变量 可以引用传递给程序的所有参数 经常应用在参数不确

14、定或者参数数目可变的程序中 应用示例:编辑args2文件内容如下: echo $# arguments passed echo they are $* 执行 : $ chmod +x args2 $ arg2 a b c $ arg2 a b $ arg2,26,shift命令,shift命令的作用是把位置参数左移 原来在$2中的内容赋给$1,$3中内容赋给$2,依此类推。 原来$1中的值就丢失了。 $#(参数变量的个数)也自动减1,27,shift命令(二),编辑shiftdemo程序如下: echo $# $* shift echo $# $* shift echo $# $* shift

15、 echo $# $* 执行: chmod +x shiftdemo ./shift a b c,28,退出状态与 $? 变量,每当程序执行完成后都会给系统返回一个退出状态。该状态是个数值,通常指示该命令运行是否成功。退出状态为0表示运行成功,非零表示运行失败。 Shell自动将最后所执行命令的退出状态设置到shell变量 $? 中,可以用echo命令在终端上显示它的值 应用示例: $ who | grep bc $ echo $? $ who | grep 123 $ echo $?,29,判断,条件判断语句是几乎所有编程语言中都有的语句,shell中有两种条件判断语句: if表达式 cas

16、e表达式,30,if表达式,一般结构 if conmmand1 then elif command2 then else fi 这个ifthenelse表达式中的else和elif是可选部分。其中elif是else if得缩写,在ifthenelse表达式中这样的else if语句可以有多个。其中fi表示ifthenelse表达式的结束。Bash支持此类表达式的多层嵌套。 其中command1需要执行并检测其退出状态,如果退出状态为0,则执行其后then与elif之间的语句,同理执行并检测command2的退出状态,并根据退出状态是否为0选择执行elif与else之间或else与fi之间的语句,31,if结构应用示例,使用ifthenelse结构编写一个判断命令行所传入

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

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