文档介绍:第4章 shell编程
内容提要
SHELL概述
创建和执行SHELL脚本
SHELL特殊字符
SHELL变量
正则表达式与算术表达式
控制结构
其他命令
函数
调试SHELL脚本
shell概述
shell特点
(1)对已有命令进行适当组合,构成新的命令,而且组合方式很简单;
(2)提供了文件名扩展字符使得用单一的字符串可以匹配多个文件名,
(3)可以直接使用shell的内置命令,而不需创建新的进程,;
4)shell允许灵活地使用数据流,提供通配符、输入/输出重定向、管道线等机制,方便了模式匹配、I/O处理和数据传输;
(5)结构化的程序模块,提供了顺序流程控制、分支流程控制、循环流程控制等;
(6)shell提供了在后台(&)执行命令的能力;
(7)shell提供了可配置的环境,允许用户创建和修改命令、命令提示符和其他的系统行为;
(8)shell提供一个高级的命令语言,允许用户能创建从简单到复杂的程序。
shell的主要版式本
在Linux系统中常见的shell版本有以下几种。
(1)Bourne shell(sh):它是UNIX最初使用的shell,并且在每种UNIX上都可以使用。它在shell编程方面相当优秀,但处理与用户的交互方面不如其他几种shell。
(2)C shell(csh):它最初由Bill Joy编写,它更多地考虑了用户界面的友好性,支持如命令补齐等一些Bourne shell所不支持的特性,但其编程接口做得不如Bourne shell。Cshell被很多C程序员使用,因为C shell的语法和C语言的很相似,C shell也由此得名。
(3)Korn shell(ksh):它集合了C shell和Bourne shell的优点,并且和Bourne shell完全兼容。
(4)Bourne Again shell(bash):bash是大多数Linux系统的默认shell。它是Bourne shell的扩展,并与Bourne shell完全向后兼容,而且在Bourne shell的基础上增加和增强了很多特性。。
(5)tcsh:它是C shell的一个扩展版本,与csh完全向后兼容,但它包含了更多使用户感觉方便的新特性,其最大的提高是在命令行编辑和历史浏览方面。它不仅和Bash shelll提示符兼容,而且还提供比Bash shell更多的提示符参数。
(6)pdksh:它是一个专门为Linux系统编写的Korn shell(ksh)的扩展版本。Ksh是一个商用shell,不能免费提供,而pdksh是免费的
创建和执行shell脚本
1. 建立shell脚本
shell脚本(shell script)是指使用用户环境shell提供的语句所编写的命令文件。shell脚本可以包含任意从键盘输入的Linux命令。
建立shell脚本的步骤与建立普通文本文件的方式相同,利用文字编辑器(如vi)进行程序录入和编辑加工。例如建立一个名为ex1的shell脚本,可提示符后输入命令:
$vi example1
[] 显示当前的日期时间、执行路径、用户账号及所在的目录位置。
在命令行中输入:
$ vi example1
在vi编辑器中输入下列内容:
#!/bin/bash
#This script is a test!
echo –n “Date and time is :”
date
echo –n “The executable path is :”$PATH
echo “Your name is :`whoami`”
echo -n “Your current directory is :”
pwd
#end
2. 执行shell脚本
执行shell脚本的方式基本上有下述三种:
(1)输入定向到shell脚本。
其一般形式是:
$bash<脚本名
例如:$bash <example1
(2)以脚本名作为参数。其一般形式为:
$bash 脚本名[参数]
例如,$bash example1
如果以当前shell执行一个shell脚本,则可以使用如下简便形式:
$. 脚本名[参数]
(3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。
使用chmode命令修改文件的属性,然后再执行
例如,$chmod a+x example1
$example1
shell特殊字符
引号
在shell中引号分为三种:双引号、单引号和倒引号。
由双引号括起来的字符,除$、倒引号(`)和反斜线(\)仍保留其特殊功能外,其余字符均作为普通字符对待。