linux shell 编程-2011.ppt





《linux shell 编程-2011.ppt》由会员分享,可在线阅读,更多相关《linux shell 编程-2011.ppt(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章LinuxShell编程Shell的基本工作原理在引导系统时,第一个需要运行的进程就是init,PID#1。它衍生出一个getty终端过程,该过程打开一个终端端口,提供一块空间给标准输入、标准输出和标准错误,并把提示符显示在屏幕上。然后执行程序/bin/login。login程序提示输入密码,加密并验证密码,建立一个初始环境,启动登录shell/bin/bash/etc/passwd文件的最后一项。bash寻找系统文件/etc/profile并执行其中的命令,然后在用户目录下寻找名字叫作.bash_profile的初始化文件。执行完bash_profile2中的命令以后,就处理用户环境文
2、件中的命令,这个文件通常称为.bashrc最后默认提示符美元符号将显示在你的屏幕上,等待你输入命令。Shell从哪里找到命令,就把该位置赋值给PATH变量规定光标的基本显示形式。光标将以以下的形式在Shell窗口出现:用户名(u)、符号、主机名(W)及$符号ulimit命令(Shell内置命令)限制核心文件的最大容量为1000000字节。核心文件是破坏了的程序文件的转存,而且占用相当大的磁盘空间。假如用户所属的组名和用户名一致,同时用户id号不大于14设置umask为002。若创建的是目录则得到775的权限,而文件得到664的权限。否则,umask被设为022,此时则给予目录755的权限,或给
3、文件644的权限。把用户名赋给USER变量(id-un)LOGNAME变量被赋予$USER的值将到收件箱(储存新邮件)的路径赋给MAIL变量对于在/etc/profile.d目录里的所有.sh文件(见14)。14检查是否为可执行文件,如果是(见15)。15用点命令来执行命令。在/etc/profile.d目录里的lang.sh和mc.sh文件分别设置Linux的字体和字型,同时还创建一个名为mc的函数,可以用来激活一个名为MidnightCommander的浏览文件管理程序。16done关键字标志for循环的结束。变量变量类型。有两种类型的变量:局部变量和环境变量。局部变量仅在创建它的Shel
4、l 中有效,环境变量则对所有创建它的Shell局部变量和范围变量的范围是指变量在一个程序中的什么地方是可见的。对于Shell 而言,局部变量的范围限于创建变量的Shell。当给一个变量赋值的时候,不要在等号两边留下空格。如果要将一个变量设置为空,在等号后面跟一个换行符即可。变量前面的美元符号用于提取其存储的值。定义变量round定义变量file当值为含空格的字符串时,必须使用引号。环境变量环境变量是能为创建它的Shell 及其派生子进程所用的变量,它们也经常被称为全局变量以区分于局部变量。一般约定环境变量为大写,它们是那些可以通过内置命令export导出的变量。设置环境变量要设置环境变量,必须
5、在给变量赋值或设置了变量后使用export命令。TERM变量被赋值为Linux,同时被导出。现在,从本Shell中启动的进程可以继承该变量了。TERM变量被定义并导出,这样由本Shell启动的子Shell就可以使用它。printf命令printf命令可以用来格式化输出,其作用是打印格式化的字符串,效果类似C语言的printf函数。格式包括字符串本身和描述打印效果的字符。定义格式的方法是在%后面跟一个说明符,例如%f 表示后面是一个浮点数,而%d 表示一个整数。把参数100作为一个小数点后面保留2位的浮点数打印。格式说明符%.2f表示的就是小数点后面保留2位。注意,它跟C语言不同,其参数之间不需
6、要逗号分隔。把参数100作为一个小数点后面保留2位的浮点数打印。格式说明符%.2f表示的就是小数点后面保留2位。注意,它跟C语言不同,其参数之间不需要逗号分隔。用printf命令格式化输出Jody字符串和数学表达式的结果变量扩展修改符(参量扩展)通过特定的修改符,可以检验和修改变量。这些修改符提供了一个快捷的方法来检验变量是不是被设置过,并把输出结果输出到一个变量中。环境变量EDITOR没有被设置过修改符“-”用/bin/vi替换变量EDITOR的因为EDITOR没有被设置,因此打印结果是空环境变量EDITOR没有被设置过修改符“-”用/bin/vi替换变量EDITOR的因为EDITOR没有被
7、设置,因此打印结果是空子字符串的变量扩展模式匹配参数用来从字符串的前边或者后边,去掉特定的部分字符串。最常用的方法就是从路径中去点路径名。%删除变量pathname中匹配模式/bin的smallesttrailingportion,也就是删除/bin%删除变量pathname中匹配模式/bin的largesttrailingportion,也就是删除/bin/local/bin。#删除变量pathname中匹配模式/home的smallestleadingportion,也就是删除开头的/usr。#删除变量pathname中匹配模式的largestleadingportion$#variabl
8、e语句显示赋值给变量name的字符串的字母个数,这里共有18个字母。位#!/bin/bashif$1#*.=tar then echo This appears to be a tar.elseecho At first glance,this does not appear to be a tar.fi位置参量通常情况下,特定的内建变量,被称为位置参量,它们被用于从命令行向脚本传递参数,或者在函数中用于保存传递给函数的参数。这些变量被称作位置参量是因为它们以数字1、2、3区分,这些数字与它们在参量清单中的位置有对应关系。Shell脚本的名字保存在变量$0 中,位置参量可以被set 命令设置、
9、重置和清空。数学扩展Shell 通过运算数学表达式和替换结果来进行数学扩展。在没有双引号和表达式嵌套的情况下,表达式可以被直接处理。有两种计算数学表达式的格式。数组bash 2.x 版本提供了创建一维数组的能力。数组允许你把一串数字、一串名字或者一串文件放在一个变量中。数组的尺寸没有限制,脚标也不必须是一定顺序的数字。获取数组中某个元素的语法是$arraynameindex。$#friend*表示数组的尺寸,即元素个数,$#friend0表示第一个元素的长度。判断条件判断语句是几乎所有编程语言中都有的语句,shell中有两种条件判断语句:if表达式case表达式 if表达式一般结构ifconm
10、mand1thenelifcommand2thenelseFicommand1需要执行并检测其退出状态,如果退出状态为0,则执行其后then与elif之间的语句,同理执行并检测command2的退出状态,并根据退出状态是否为0选择执行elif与else之间或else与fi之间的语句test命令shell有一条内部命令test,经常用来在if命令中测试一种或几种条件,其一般格式为:testexpression其中expression表示要测试的条件。test计算expression,若结果为真,其返回的退出状态为0,若结果为假,返回的退出状态就不为零.返回结果为真退出状态与$?变量每当程序执行完
11、成后都会给系统返回一个退出状态。该状态是个数值,通常指示该命令运行是否成功。退出状态为0表示运行成功,非零表示运行失败。Shell自动将最后所执行命令的退出状态设置到shell变量$?中,可以用echo命令在终端上显示它的值.test命令(二)test命令的另一种格式shell程序使用test命令非常频繁,因此产生了另一种公认的命令格式:expression“”实际上就是命令的名字,同时要求在表达式的有一个配对的“”,在“之后和”之前都要有空格 “之后和”之前都要有空格test命令(三)整数操作符test命令还有一类进行整数比较的操作符,见右表:例如:操作符“-eq”检测两个整数是否相等,如果
12、有一个变量名为count,想看看它的值是否为0,则可以写成:“$count”eq0操作符操作符返回真(退出状返回真(退出状态为态为0)的条件)的条件int1 eq int2int1 等于等于 int2int1 ge int2 int1 大于或等于大于或等于 int2int1 gt int2int1 大于大于 int2int1 le int2 int1 小于或等于小于或等于 int2int1 lt int2int1 小于小于 int2int1 ne int2int1 不等于不等于 int2test命令(四)文件操作符test提供了一类问询文件状态的一元操作符,见右表:例如:-f/etc/fsta
13、b检测fstab文件是否存在且是否为普通文件 shell入门的拦路虎:入门的拦路虎:syntax error:unexpected end of file开始学习bash,每次测试代码都在windows下写好,然后传到linux上执行。在学习到if等流程控制的语法的时候,我遇见了第一个难题写的 if的测试总是不正确:“if.sh:line11:syntaxerror:unexpectedendoffile”。-这个问题解决方案如下:学shell还是用vi或vim吧!-shell入门的拦路虎:入门的拦路虎:syntax error:unexpected end of filedos文件转换成文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux shell 编程-2011 编程 2011

限制150内