欢迎来到天天文库
浏览记录
ID:10759725
大小:47.25 KB
页数:33页
时间:2018-07-08
《shell基础,变量,参数,函数,调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、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是加州
2、伯克利大学的BillJoy为BSDUnix开发的,与sh不同,它的语法与C语言很相似。它提供了BourneShell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,CShell与BourneShell并不兼容。 (3)KornShell是AT&TBell实验室的DavidKorn开发的,它集合了CShell和BourneShell的优点,并且与BourneShell向下完全兼容。KornShell的效率很高,其命令交互界面和编程交互界面都很好。 (4)BourneAgainShell(即bash)是自由软件基金会(GNU)开发的一个Shell,它
3、是Linux系统中一个默认的Shell。Bash不但与BourneShell兼容,还继承了CShell、KornShell等优点。二.一个Bash例程1.编写并保存以下代码例程1.1 清空日志文件#!/bin/bash#一个Bash脚本的正确的开头部分.LOG_DIR=/var/log#如果使用变量,当然比把代码写死的好.cd$LOG_DIRcat/dev/null>messagescat/dev/null>wtmpecho"Logscleanedup."exit#这个命令是一种正确并且合适的退出脚本的方法.例程1.2 以下是上面例程的改进代码段1#!/bin/bash2#清除,
4、版本334#警告:5#-----6#这个脚本有好多特征,7#+这些特征是在后边章节进行解释的.8#大概是进行到本书的一半的时候,9#+你就会觉得它没有什么神秘的了.10111213LOG_DIR=/var/log14ROOT_UID=0#$UID为0的时候,用户才具有root用户的权限15LINES=50#默认的保存行数16E_XCD=66#不能修改目录?17E_NOTROOT=67#非root用户将以error退出181920#当然要使用root用户来运行.21if["$UID"-ne"$ROOT_UID"]22then23echo"Mustberoottorunthisscr
5、ipt."24exit$E_NOTROOT25fi2627if[-n"$1"]28#测试是否有命令行参数(非空).29then30lines=$131else32lines=$LINES#默认,如果不在命令行中指定.33fi343536#StephaneChazelas建议使用下边37#+的更好方法来检测命令行参数.38#+但对于这章来说还是有点超前.39#40#E_WRONGARGS=65#非数值参数(错误的参数格式)41#42#case"$1"in43#"")lines=50;;44#*[!0-9]*)echo"Usage:`basename$0`file-to-cleanu
6、p";exit$E_WRONGARGS;;45#*)lines=$1;;46#esac47#48#*直到"Loops"的章节才会对上边的内容进行详细的描述.495051cd$LOG_DIR5253if[`pwd`!="$LOG_DIR"]#或者if["$PWD"!="$LOG_DIR"]54#不在/var/log中?55then56echo"Can'tchangeto$LOG_DIR."57exit$E_XCD58fi#在处理logfile之前,再确认一遍当前目录是否正确.5960#更有效率的做法是:61#62#cd/var/log
7、
8、{63#echo"Cannotchanget
9、onecessarydirectory.">&264#exit$E_XCD;65#}6667686970tail-$linesmessages>mesg.temp#保存logfile消息的最后部分.71mvmesg.tempmessages#变为新的log目录.727374#cat/dev/null>messages75#*不再需要了,使用上边的方法更安全.7677cat/dev/null>wtmp#':>wtmp'和'>wtmp'具有相同的作用78echo"Logscleane
此文档下载收益归作者所有