ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:153.49KB ,
资源ID:17613631      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17613631.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Shell编程基础教程Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Shell编程基础教程Word文档下载推荐.docx

1、九、 Shell运算符 121. 算术运算符 122. 关系运算符 133. 布尔运算符 144. 字符串运算符 155. 文件测试运算符 17十、 Shell注释 18十一、 Shell字符串 191. 单引号 192. 双引号 193. 拼接字符串 194. 获取字符串长度 195. 提取子字符串 20十二、 Shell数组 201. 定义数组 202. 读取数组 203. 获取数组的长度 21十三、 Shell echo命令 211. 显示转义字符 212. 显示变量 213. 显示换行 224. 显示不换行 225. 显示结果重定向至文件 226. 原样输出字符串 227. 显示命令执

2、行结果 22十四、 Shell printf命令 22十五、 Shell if else语句 231. if . else 语句 232. if . else . fi 语句 243. if . elif . fi 语句 244. if语句其他用法 25十六、 Shell case esac语句 26十七、 Shell for 循环 271. 顺序输出当前列表中的数字: 272. 顺序输出字符串中的字符: 283. 没有in列表,选取命令行输入的参数:4. 显示主目录下以 .bash 开头的文件:十八、 Shell while 循环 28十九、 Shell until循环 29二十、 Shel

3、l跳出循环 301. break命令 302. continue命令 31二十一、 Shell函数 321. 不带return语句的函数 322. 带有return语句的函数 333. 函数嵌套 33二十二、 Shell函数参数 34二十三、 Shell输入输出重定向 341. 输出重定向 342. 输入重定向 353. 重定向深入讲解 354. Here Document 36二十四、 Shell文件包含 37一、 Shell简介Shell 诞生于 Unix,是一个用C语言编写的程序,它既是一种命令语言,又是一种程序设计语言 命令语言: 它交互式地解释和执行用户输入的命令; 程序设计语言:

4、它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。Shell虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。也可以说,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度。 注意:单独地学习 Shell 是没有意义的,请先学习Unix/Linux入门教程,了解 Unix/Linux 基础。Shell有两种执行命令的方式: 交互式(

5、Interactive):解释并执行用户的命令,用户输入一条命令,Shell就解释执行一条。 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。二、 几种常见的Shell上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。Unix/Linux上常见的Shell脚本解释器有sh、ba

6、sh、csh、ksh等,习惯上把它们称作一种Shell。1. shsh 是Unix 标准默认的shell,属于系统管理shell。有如下几个突破: 脚本可以写在文件里被调用,比如sh a.sh可以执行a.sh里面的shell命令 可以交互或者非交互的方式调用 可以同步执行也可以异步执行 支持输入输出的pipeline,就是管道方式 支持输入输出的重定向,就是现在使用的 和 提供一系列内置命令 提供流程控制基本的函数和结构 弱类型变量,就是可以直接 a=1,不需要指定a为int 提供本地和全局的变量作用域 脚本执行前不需要编译 去掉goto功能 使用进行命令执行替换 增加了fordodone的循

7、环 增加了caseinesac的条件选择 文件描述符2代表错误信息导出2. cshcsh 是一种语法类似于C语言的脚本语言,后来csh引入了Tenex系统中的一些功能逐渐演化成了tcsh,现在我们所看到的csh其实是tcsh的一个软链接。目前Mac系统上还保留了csh。3. kshksh 是当时兼容性很高的脚本语言,在许多操作系统上都可用,除了向后兼容sh同时也吸取了csh的一些优点。原来是一款专有软件,直到2000年才作为开源软件发布。4. ashash是Linux中占用系统资源最少的一个小shell,之后又演变为dash,但是由于本身内部命令较少,使用起来很不方便所以未能流行起来。5. b

8、ashbash是Linux标准默认的shell,除了支持脚本的向后兼容性,bash还吸收了K Shell和C Shell的一些特性。目前很多机器上的/bin/sh往往都链接到bash,我们以为我们是使用Bourne shell,实际上我们使用的是Bourne-Again shell三、 Shell与编译型语言的差异大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。1. 编译型语言很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C+和Java,都是编译型语言。这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),

9、这个过程被称作“编译”。运行程序时,直接读取目标代码(object code)。由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点。但是,由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现一个简单的功能需要大量复杂的代码。例如,在C+里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。2. 解释型语言解释型语言也被称作“脚本语言”。执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再

10、由计算机运行。因为每次执行程序都多了编译的过程,因此效率有所下降。使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象;缺点是它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还是值得的:花一个小时写成的简单脚本,同样的功能用C或C+来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题。脚本编程语言的例子有awk、Perl、Python、Ruby与Shell。四、 什么时候使用Shell Shell是各UNIX系统之间通用的功能,并且经过了POSIX(可移植操作系统接口)的标准化。所以Shell脚

11、本只要“用心写”一次,即可应用到很多系统上。之所以要使用Shell脚本是基于: 简单性:Shell是一个高级语言,通过它,你可以简洁地表达复杂的操作。 可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。 开发容易:可以在短时间内完成一个功能强大又好用的脚本。测试工程师使用shell可以减少一些重复繁琐的工作,同时也能根据需要编写出更有效率的工作脚本开发工程师用shell可以辅助完善代码的开发,使用shell代替一些复杂的代码服务器工程师可以将大部分的工作全部通过shell脚本来实现来解放双手五、 第一个Shell脚本使用touch或vi新建一个文件test.sh

12、,这里扩展名为sh(sh代表shell),扩展名并不影响脚本执行,只是方便理解。输入一些代码:#!/bin/bashecho Hello World !“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo 命令用于向窗口输出文本。脚本编写完成后,需要赋予它执行的权限才能让脚本运行起来,使用chmod命令让脚本有执行权限chmod +x test.sh执行脚本有两种方式,一种是通过【./】查找当前的脚本并执行,通过这种方式运行bash脚本,第一行一定要写对,好让脚本查找到正确的解释器。./test.sh 注意,一定要写成./test.sh,而不是t

13、est.sh。运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。另一种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:/bin/sh test.sh这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。例子:下面的脚本使用 read 命令从 stdin(标准输入) 获取输入并赋值给 NAME 变量,最后在 s

14、tdout(标准输出) 上输出,运行看看结果是什么What is your name?read NAMEHello, $NAME六、 Shell变量Shell支持自定义变量。1. 定义变量定义变量时,变量名不加美元符号($),如:variableName=value变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:1.1 首个字符必须为字母(a-z,A-Z);1.2 中间不能有空格,可以使用下划线(_);1.3 不能使用标点符号;1.4 不能使用bash里的关键字(可用help命令查看保留关键字);变量定义举例:myUrl=myNum=1002

15、. 使用变量使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:your_name=wukongecho $your_nameecho $your_name变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:for skill in Ada Coffe Action Java doI am good at $skillScriptdone如果不给skill变量加花括号,写成echo I am good at $skillScript,解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。推荐给

16、所有变量加上花括号,这是个好的编程习惯。3. 重新定义变量已定义的变量,可以被重新定义,如:echo $myUrl 注意,第二次赋值的时候不能写$myUrl=4. 只读变量使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。下面的例子尝试更改只读变量,结果报错:readonly myUrl运行脚本,结果如下:/bin/sh: NAME: This variable is read only.5. 删除变量使用 unset 命令可以删除变量。语法:unset variable_name变量被删除后不能再次使用;unset 命令不能删除只读变量。举个例子:/bin/shu

17、nset myUrlecho $myUrl上面的脚本没有任何输出。6. 变量类型运行shell时,会同时存在三种变量:6.1 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。6.2 环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量,通过set命令可查看这些变量。6.3 shell变量shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行七、 Shell特殊变

18、量前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:$echo $运行结果29949特殊变量列表变量含义$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#传递给脚本或函数的参数个数。$*传递给脚本或函数的所有参数。$被双引号( )包含时,与 $* 稍有不同,下面将会讲到。$?上个命令的退出状态,或函数的返回值。$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。命令行参

19、数运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。下面用一个脚本来看看这些所有的特殊变量:File Name: $0First Parameter : $1 $2Quoted Values: $ $*Total Number of Parameters : $#echo $?echo $ 运行结果:$./test.sh Zara Ali - Zara 和 Ali 为传给test.sh脚本的2个参数File Name : ./test.sh ZaraSecond Parameter : Ali Zara Ali 21

20、7895$* 和 $ 的区别$* 和 $ 都表示传递给函数或脚本的所有参数,不被双引号()包含时,都以$1$2 $n 的形式输出所有参数。但是当它们被双引号()包含时,$* 会将所有的参数作为一个整体,以$1 $2 $n的形式输出所有参数;$ 会将各个参数分开,以下面的例子可以清楚的看到 $* 和 $ 的区别:print each param from $*for var in $var$执行 ./test.sh abcd,看到下面的结果:print each param from a b c dabcd八、 Shell替换如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使

21、用变量就是一种替换,转义字符也是一种替换。1. 转义字符替换a=10echo -e Value of a is $a nValue of a is 10这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:Value of a is 10n下面的转义字符都可以用在 echo 中:转义字符反斜杠a警报,响铃b退格(删除键)f换页(FF),将当前位置移到下页开头n换行r回车t水平制表符(tab键)v垂直制表符 可以使用 echo 命令的 -E 选项禁止转义,默认也是不转义的;使用 -n 选项可以禁止插入换行符。 2. 命令替换命令替换是指Shell可以先执行命令,将输出结果暂时

22、保存,在适当的地方输出。命令替换的语法:command 注意是反引号,不是单引号,这个键位于 Esc 键下方。下面的例子中,将命令执行结果保存在变量中:DATE=dateDate is $DATEUSERS=who | wc -lLogged in user are $USERSUP=date ; uptimeUptime is $UPDate is Thu Jul 2 03:59:57 MST 2009Logged in user are 1Uptime is Thu Jul 2 03:03:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07

23、, 0.153. 变量替换变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值可以使用的变量替换形式:形式 说明$var 变量本来的值$var:-word 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。=word 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。+word 如果变量 var 被定义,那么返回 word,但不改变 var 的值。请看下面的例子:echo $var:-Variable is not set1 - Value of var is $var=2 - Value

24、 of var is $varunset var+This is default value3 - Value of var is $varvar=Prefix4 - Value of var is $varVariable is not set1 - Value of var is2 - Value of var is Variable is not set3 - Value of var isThis is default value4 - Value of var is Prefix九、 Shell运算符Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件

25、测试运算符。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加:val=expr 2 + 2Total value : $val运行脚本输出: 4两点注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。1. 算术运算符先来看一个使用算术运算符的例子:b=20val=expr $a + $ba + b :val=expr $a - $ba - b :val=expr $a * $ba * b :val=expr $b / $ab / a :val=expr $b % $ab % a :if $a = $b then echo a is equal to b

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1