shell脚本的作用跟批处理文件的很相似,都是把一组UNIX/Linux命令输入文件,然后执行该文件。更复杂的脚本还包括用于实现判断、循环、文件测试等功能的程序结构。编写脚本不仅要掌握编程结构和编程技巧,还需要对UNIX/Linux工具集及其运行机理有较深的理解。有一些工具,如grep、sed和awk,在处理命令输出和文件时功能很强大。熟悉了这些工具和所用shell的程序结构后,就可以编写有用的脚本了。当用户从脚本中执行命令时,shell被视作一种编程语言。
UNIX系统大都支持3种主流的shell,它们是Bourne shell(也称为AT&T shell)、C shell(也称Berkeley shell)和Korn shell(Bourne shell的一个扩展集)。交互式运行时,这3种shell非常相似,但作为脚本语言,它们在语法和效率上有一定的差别。
默认的Bourne shell命令提示符是美元符号($)。
默认的C shell命令提示符是百分号(%)。
默认的Korn shell提示符是美元符号($)。
Linux上默认的shell是GNU bash(Bourne Again shell),
默认的Bash提示符为美元符号($)。
Linux用户常用的另一个shell是TC shell默认的C shell提示符大于符号(>)。
Linux上的/etc/shell文件中包含所有在当前Linux环境中可用的shell程序。
TC shell是C shell的扩展版本,且具有完全兼容性
shell的一项主要功能是在交互方式下解释从命令行输入的命令。shell解析命令行,将其分解为词(也称为token),词之间由空白分隔,空白由制表符、空格键或换行组成。如果词中有特殊的元字符,shell会对其进行替换。shell处理文件I/O和后台进程。对命令行的处理结束后,shell搜索命令并开始运行它。
shell的另一项重要功能是定制用户环境,这通常在shell的初始化文件中完成。初始化文件中有很多定义,包括设置终端键和窗口属性,设置用来定义搜索路径、权限、提示符和终端类型的变量,设置特定应用程序所需的变量,如窗口、字处理程序和编程语言的库等。Korn/Bash shell和C/TC shell还提供了更多的定制功能:历史添加、别名、设置内置变量防止用户破坏文件或无意中退出,通知用户作业完成。
shell还能用作解释性的编程语言。shell程序(也称为shell脚本)由文件中的一列命令组成。shell程序用编辑器生成(也可以在命令行上直接输入脚本)。它们由UNIX命令组成,命令之间插入了一些基本的程序结构,如变量赋值、条件测试和循环。shell脚本不需要编译。shell会逐行解释脚本,就好像它是从键盘输入一样。shell负责解释命令,因此,用户需要了解可用的命令有哪些。
POSIX标准
为了给不同的操作系统及其程序提供软件标准,人们提出了POSIX标准(也称为操作系统标准),POSIX标准的参与者包括美国电子与电器工程师协会(IEEE)和国际标准化组织(ISO)。其目标是在不同平台之间提供应用程序的可移植性标准,以便提供一个类UNIX的计算机环境。