- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unix Shell 编程简介
第一节 简介
1.1 什么是SHELL
SHELL常被看作UNIX系统的命令解释器,对于熟悉Windows用户,UNIX SHELL类似于DOS Shell,COMMAND.COM.Unix Shell 不仅仅是一个命令解释器,还是一个强大的编程语言,有着完整的条件语句\循环和函数.
1.2 SHELL的类型
在UNIX中主要有两种主要类型的SHELL:
* Bourne Shell(包括sh、ksh、 bash)
* C Shell(包括csh和 tcsh)
Bourne 类型的Shell的,缺省的提示符是$,如果是C类型的SHELL, 缺省的提示符是%.
不同类型的Bourne Shell如下:
*Bourne Shell(sh)
*Korn Shell(ksh)
*Bourne Again Shell(bash)
*POSLX Shell
不同类型的C Shell如下:
*C Shell(csh)
*TENEX/TOPS C Shell(tcsh)
1.2.1 Bourne Shell
70年代中期由 Stephen R.Bourne在ATT贝尔实验室编写使用. Bourne Shell在多数UNIX版本中通常被安装在/bin/sh下.
三个主要缺点
1、没有文件名完整功能
2、没有命令历史或命令编辑
3、很难执行多个后台进程或任务
1.2.2 C Shell
C Shell 在80年代由Bill Toy在加州大学伯克利分校开发.C Shell在多数UNIX版本中通常被安装在/bin/csh下.
缺点:
输入输出控制比较弱
缺少函数
语法不清晰,比较混乱
优点
命令历史(Command History).用户可以重复执行以前执行过的命令,在重新执行前还可以编辑命令.
别名(alias)可以为一条命令创建一个短的别名.
文件名完整(file Name Completion) 只输入文件的几个字符让C Shell 自动完整文件名.
任务控制(Job Controls),可以用job命令执行多个进程并控制.
1.2.3 TENEX/TOPS C Shell(tcsh)
是CShell的一个新版本,可以用向上向下的方向键浏览历史命令,用左右方向键来编辑命令.
1.2.4Korn Shell(ksh)
Ksh 与sh 完全兼容,增加一些额外特征
命令历史和历史替换
命令别名和函数
文件名完整
数组变量
内置整数运算
1.2.5 Bourne Again Shell(bash)
Bourne Again Shell(bash)是作为GUN的一部分开发的,也已经在linux这样的系统中取代了sh,包含了C Shell Korn Shell特征,保留了与sh语法兼容,几乎可以运行所有的Bourne Shell脚本.
注:以下解释如果没有特别指出,都是基于Bourne Shell脚本
一个简单的shell Scrip文件
1 #! /bin/sh
2 echo “please input the number of loop:”
3 read num
4 while [ $num –lt 10 ]
5 do
6 echo $num
7 num=`echo :$num_1”|bc`
8 done
解释
#! /bin/sh
1. 如果Script的第一个非空白字不是#,则它会使用Bourne Shell。
2. 如果Script的第一个非空白字是#时,但不以#!开头时,则它会使用C Shell。
3. 如果Script以#!开头,则#!後面所写的就是所使用的Shell,而且要将整个路径名称指出来。
建议使用第三种方式指定Shell ,以确保所执行的就是所要的。Bourne Shell的路径名称为/bin/sh ,而C Shell 则为/bin/csh。使用Bourne Shellecho enter filename or #!/bin/sh
2. 使用C Shell
# C Shell Script or #!/bin/csh
3使用perl#! /usr/bin/perl
除了在Script内指定所使用的Shell 外,你也可以在命令列中强制指定。比如你要用C Shell 执行某个Script,你可以下这个命令:
csh filename
此时的Script的存取权就不一定要为可执行档,其内部所指定的Shell 也会无效
–lt 10 ]
do
echo $num
num=`echo :$
文档评论(0)