"这篇文档是关于shell编程的入门与提高指南,主要涵盖了BourneShell的基础知识、编程技巧以及shell脚本的编写。文档由何斌武制作,来源于大连理工大学的LINUX选修课讲义,旨在教育和分享,禁止用于商业用途。"
**BourneShell介绍**
BourneShell是由Stephen Bourne在Bell实验室开发的一种Unix shell,它是许多现代shell(如bash)的基础。BourneShell提供了许多基础特性以及有用的扩展,是Unix/Linux系统中常用的命令解释器。
**shell基础知识**
- **提示符及其环境**:在Unix/Linux系统中,用户的shell提示符通常以"$"表示,它可以从`/etc/passwd`文件中找到相关配置。`/etc/profile`和`$HOME/.profile`是两个重要的配置文件,用于设置用户登录时的环境变量。
- **shell执行选项**:shell启动时可以接受不同的选项,例如`-n`用于检查脚本的语法而不执行,`-x`开启命令行跟踪模式,`-i`表示交互式模式等。这些选项可以组合使用,但某些选项可能互斥,比如`-e`(遇到错误就停止)和`-i`(交互模式)。
**shell编程**
- **shell变量**:包括用户定义变量、环境变量和位置变量(shell参数)。环境变量对所有子进程可见,位置变量则包含了命令行参数。
- **shell脚本**:shell脚本是一种结合了命令、逻辑控制和变量的程序,用于自动化任务。编写shell脚本涉及条件测试(if-else语句)、循环(for, while等)以及函数定义等。
**shell定制**
- 用户可以通过修改环境变量、定义别名、创建函数等方式定制shell的行为。例如,通过`export`命令可以将一个变量设置为环境变量,使其对子进程可见。
**特殊字符和功能**
- 特殊字符如`$`, `;`, `|`, `&`, `(`, `)`等在shell编程中有着特定的意义,它们用于命令替换、命令分隔、管道、并行执行等操作。
**条件测试和循环控制**
- 条件测试允许根据文件状态、数值比较或其他条件执行不同的命令。循环结构如`while`, `for`和`until`用于重复执行一段代码直到满足特定条件。
**受限shell (Restricted Shell)**
- `/bin/rsh`或`sh -r`是一种受限的shell模式,限制了用户执行如`cd`、改变`PATH`或进行输出重定向等操作,通常用于提供更安全的环境。
这个手册提供了深入理解shell编程的起点,无论对于初学者还是有经验的用户,都是一个有价值的资源,帮助他们提升shell脚本编写能力和系统管理效率。