没有合适的资源?快使用搜索试试~ 我知道了~
Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序 从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
资源推荐
资源详情
资源评论
shell编程
1Shell脚本语言与编译型语言的差异
编译型语言
解释型语言
2什么时候用shell
3第一个Shell脚本
3.1作为可执行程序
3.2作为解释器参数
4shell变量
4.1定义变量
4.2使用变量
4.3重新定义变量
4.4只读变量
4.5 删除变量
4.6 变量类型
1)局部变量
2)环境变量
5Shell特殊变量
5.1命令行参数
5.2退出状态
6shell数组
6.1定义数组
6.2读取数组
6.3获取数组的长度
7shell替换
7.1shell变量替换
7.2命令替换
7.3变量替换
8与用户交互
8.1echo
8.2read
9Shell运算符
9.1算术运算符
9.2关系运算符
9.3逻辑运算符
9.4字符串运算符
9.5文件测试运算符
10shell注释
11shell字符串
11.1单引号
11.2双引号
11.3拼接字符串
11.4获取字符串长度
11.5提取子字符串
12printf
13if语句
1)if...else语句
2)if...else...fi语句
3)if...elif...fi语句
14case语句
15for语句
16while语句
17until循环
18跳出循环
18.1break命令
18.2continue命令
19shell函数
19.1函数返回值
19.2嵌套调用
19.3函数参数传递
19.4函数取消
19.5函数中的定义的变量
20shell输入输出重定向
20.1输出重定向
20.2输入重定向
20.3重定向深入讲解
21.4/dev/null文件
22shell文件包含
shell编程
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成
的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作
为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行
的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性及
其使用方法,是用好Unix/Linux系统的关键。
Shell有两种执行命令的方式:
交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,
而不必一条一条地敲命令。
Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序
从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
Shell初学者请注意,在平常应用中,建议不要用root帐号运行Shell。作为普通用户,不管您有意还是无
意,都无法破坏系统;但如果是root,那就不同了,只要敲几个字母,就可能导致灾难性后果。
Shell需要依赖其他程序才能完成大部分的工作,这或许是它的缺陷,但它不容置疑的长处是:简洁的脚本语
言标记方式,而且比C语言编写的程序开发周期要短。
Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多
少种Shell,其实说的是Shell脚本解释器。bash是Linux标准默认的shell,本教程也基于bash讲解。
bash由BrianFox和ChetRamey共同完成,是BourneAgainShell的缩写。
sh由SteveBourne开发,是BourneShell的缩写,sh是Unix标准默认的shell。
1Shell脚本语言与编译型语言的差异
大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。
编译型语言
很多传统的程序设计语言,例如C、C++和Java,都是编译型语言。这类语言需要预先将我们写好的源代码
(sourcecode)转换成目标代码(objectcode),这个过程被称作“编译”。
运行程序时,直接读取目标代码(objectcode)。由于编译后的目标代码(objectcode)非常接近计算机底层,因
此执行效率很高,这是编译型语言的优点。
但是,由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现
一个简单的功能需要大量复杂的代码。例如,在C++里,就很难进行“将一个目录里所有的文件复制到另一个目录
中”之类的简单操作。
解释型语言
解释型语言也被称作“脚本语言”。
执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(sourcecode),并将其转换成目标代码
(objectcode),再由计算机运行。
因为每次执行程序都多了解释的过程,因此效率有所下降。
使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对
象;缺点是它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还是值得的:花一个小时写成的简
单脚本,同样的功能用C或C++来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了,快到足
以让人忽略它性能上的问题。脚本编程语言的例子有awk、Perl、Python、Ruby与Shell。
2什么时候用shell
因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一
次,即可应用到很多系统上。因此,之所以要使用Shell脚本是基于:
简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。
可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。
开发容易:可以在短时间内完成一个功能强大又妤用的脚本。
但是,考虑到Shell脚本的命令限制和效率问题,下列情况一般不使用Shell:
1.资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等)。
2.需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用
C/C++)。
3.有跨平台(跨操作系统)移植需求(一般使用C或Java)。
4.复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。
5.对于影响系统全局性的关键任务应用。
6.对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵、破解、恶意破坏等等。
7.项目由连串的依赖的各个部分组成。
8.需要大规模的文件操作。
9.需要多维数组的支持。
10.需要数据结构的支持,比如链表或树等数据结构。
11.需要产生或操作图形化界面GUI。
12.需要直接操作系统硬件。
13.需要I/O或socket接口。
14.需要使用库或者遗留下来的老代码的接口。
15.私人的、闭源的应用(shell脚本把代码就放在文本文件中,全世界都能看到)。
如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧——比如C/C++,或者是Java。即使如
此,你会发现,使用shell来原型开发你的应用,在开发步骤中也是非常有用的。
3第一个Shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好。
输入一些代码:
“#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo命令用于向
窗口输出文本。
3.1作为可执行程序
将上面的代码保存为test.sh,并cd到相应目录:
#!/bin/bash
echo"HelloWorld!"
chmod+x./test.sh#使脚本具有执行权限
./test.sh#执行脚本
剩余46页未读,继续阅读
资源评论
闭眼观心
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功