Shell自己是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。做为命令语言,它交互式地解释和执行用户输入的命令;做为程序设计语言,它定义了各类变量和参数,并提供了许多在高级语言中才具备的控制结构,包括循环和分支。shell
它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、创建文件并以并行的方式协调各个程序的运行。编程
所以,对于用户来讲,shell是最重要的实用程序,深刻了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键.数组
Shell是一种脚本语言,就必须有解释器来执行这些脚本安全
咱们常说有多少种Shell,其实说的是Shell脚本解释器bash
bash是Linux系统默认使用的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。数据结构
Linux使用它做为默认的shell是由于它有诸如如下的特点:socket
可使用方向键查阅和快速输入并修改命令。函数
自动经过查找匹配的方式给出以某字符串开头的命令。性能
包含了自身的帮助功能,你只要在提示符下面键入help就能够获得相关的帮助。ui
如何编写一个shell(bash)脚本
为何要编写shell脚本
Shell有两种执行命令的方式:
交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
批处理(Batch):用户事先写一个Shell脚本(Script),其中有不少条命令,让Shell一次把这些命令执行完,而没必要一条一条地敲命令。
Shell脚本也有变量和流程控制语句,但Shell脚本是解释执行的,不须要编译,Shell程序从脚本中一行一行读取并执行这些命令,至关于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
简单性:Shell是一个高级语言;经过它,你能够简洁地表达复杂的操做。
可移植性:使用POSIX所定义的功能,能够作到脚本无须修改就可在不一样的系统上执行。
开发容易:能够在短期内完成一个功能强大又好用的脚本。
还有哪些脚本解释器
哪些状况下不适合使用Shell脚本
sh 由Steve Bourne开发,是Bourne Shell的缩写,各类UNIX系统都配有sh。
ash shell 是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,于是使用起来很不方便。
csh 是Linux比较大的内核,它由以William Joy为表明的共计47位做者编成,共有52个内部命令。该shell实际上是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。
ksh 是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优势是几乎和商业发行版的ksh彻底兼容,这样就能够在不用花钱购买商业版本的状况下尝试商业版本的性能了。
可是,考虑到Shell脚本的命令限制和效率问题,下列状况通常不使用Shell:
1.资源密集型的任务,尤为在须要考虑效率时(好比,排序,hash等等)。
2.须要处理大任务的数学操做,尤为是浮点运算,精确运算,或者复杂的算术运算(这种状况通常使用C++或FORTRAN 来处理)。
3.有跨平台(操做系统)移植需求(通常使用C 或Java)。
4.复杂的应用,在必须使用结构化编程的时候(须要变量的类型检查,函数原型,等等)。
5.对于影响系统全局性的关键任务应用。
6.对于安全有很高要求的任务,好比你须要一个健壮的系统来防止入侵、破解、恶意破坏等等。
7.项目由连串的依赖的各个部分组成。
8.须要大规模的文件操做。
9.须要多维数组的支持。
10.须要数据结构的支持,好比链表或数等数据结构。
11.须要产生或操做图形化界面 GUI。
12.须要直接操做系统硬件。
13.须要 I/O 或socket 接口。
14.须要使用库或者遗留下来的老代码的接口。
15.私人的、闭源的应用(shell 脚本把代码就放在文本文件中,全世界都能看到)。
①百度
②http://www.jb51.net/article/52374.htm