Linux下Shell编程解析

来源:互联网 发布:淘宝女装文案大全 编辑:程序博客网 时间:2024/04/29 07:35

Linux下命令解释器称为Shell,Shell是一种具备特殊功能的程序,它是介于使用者和UNIX/Linux操作系统之核心程序(kernel)间的一个接口。它接收用户输入的命令并把它送入内核去执行。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
Linux系统提供多种不同的Shell以供选择。常用的有BourneShell(简称sh)、C-Shelll(简称csh)、KornShell(简称ksh)和BourneAgainShell(简称bash)。—-以下内容来自于教材。
(1)BourneShell是AT&TBell实验室的StevenBourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。BourneShell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
(2)CShell是加州伯克利大学的BillJoy为BSDUnix开发的,与sh不同,它的语法与C语言很相似。它提供了BourneShell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,CShell与BourneShell并不兼容。
(3)KornShell是AT&TBell实验室的DavidKorn开发的,它集合了CShell和BourneShell的优点,并且与BourneShell向下完全兼容。KornShell的效率很高,其命令交互界面和编程交互界面都很好。
(4)BourneAgainShell(即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与BourneShell兼容,还继承了CShell、KornShell等优点。
不论是哪一种Shell,它最主要的功用都是解译使用者在命令列提示符号下输入的指令。
当登录系统(login)时,一个交谈式的shell会跟着起动,并提示您输入命令。在键入一个命令后,接着就是shell的工作了,它会进行:
1.语法分析命令列
2.处理万用字符(wildcards)、转向(redirection)、管线(pipes)与工作控制(jobcontrol)
3.另外,shell还管理档案输入输出及幕后处理(backgroundprocessing)。在处理命令列之后,shell会寻找命令并开始执行它们。
刚开始学UNIX/Linux系统时,大部份的时间会花在于提示符号(prompt)下执行命令
Shell的另一个重要功用是提供个人化的使用者环境,这通常在shell的初始化档案中完成(.profile、.login、.cshrc、.tcshrc等等)。这些档案包括了设定终端机键盘和定义窗口的特征;设定变量,定义搜寻路径、权限限、提示符号和终端机类形;以及设定特殊应用程序所需要的变量,例如窗口、文字处理程序、及程序语言的链接库。
知道了shell以后,我们来举例说明shell程序如何编写。
范例一:让变量sum进行100+300+50的加总结果
[root@linux~]#sum=100+300+50
[root@linux~]#echosum  
    100+300+50  
    [root@linux~]#declare-isum=100+300+50  
    [root@linux~]#echo
sum
450

使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):#!/bin/bash…注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tcshell改为tcsh,其他类似。符号#!用来告诉系统执行该脚本的程序,本例使用/bin/bash。编辑结束并保存后,如果要执行该脚本,必须先使其可执行:chmod+xfilename此后在该脚本所在目录下,输入./filename即可执行该脚本。[root@localhostshell]#vish01.sh#!/bin/bash#Program:#Thisprogramshows"HelloWorld!"inyourscreen.#History:#2011/09/13XJMFirstreleaseecho-e"HelloWorld!\a\n"exit0功能说明:显示文字。语法:echo[-ne][字符串]或echo[--help][--version]补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。参数:-n不要在最后自动换行-e若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a发出警告声;\b删除前一个字符;\c最后不加上换行符号;\f换行但光标仍旧停留在原来的位置;\n换行且光标移至行首;\r光标移至行首,但不换行;\t插入tab;\v与\f相同;\\插入\字符;\nnn插入nnn(八进制)所代表的ASCII字符;–help显示帮助–version显示版本信息简单shell程序(脚本一)使用Shell命令实现
0 0
原创粉丝点击