预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共67页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Shell编程基础图形界面shell(即GUIshell)命令行式shell(即CLIshell)交互式shell和非交互式shell基本格式合理使用注释变量赋值和引用Shell里的命令管道,重定向和backtick重定向反短斜线Ubuntuif语句&&和||操作符#!/bin/sh mailfolder=/var/spool/mail/james [-r"$mailfolder"]||{echo"Cannotread$mailfolder";exit1;} echo"$mailfolderhasmailfrom:" grep"^From"$mailfolder 该脚本首先判断mailfolder是否可读,如果可读则打印该文件中的"From"一行。如果不可读则或操作生效,打印错误信息后脚本退出。需要注意的是,这里我们必须使用如下两个命令: -打印错误信息 -退出程序 我们使用花括号以匿名函数的形式将两个命令放到一起作为一个命令使用;普通函数稍后再作说明。即使不用与和或操作符,我们也可以用if表达式完成任何事情,但是使用与或操作符会更便利很多。case语句#!/bin/sh ftype=`file"$1"` case"$ftype"in "$1:Ziparchive"*) unzip"$1";; "$1:gzipcompressed"*) gunzip"$1";; "$1:bzip2compressed"*) bunzip2"$1";; *)error"File$1cannotbeuncompressedwithsmartzip";; esacselect语句while/for循环下面是一个实用的脚本showrpm,其功能是打印一些RPM包的统计信息: #!/bin/sh #listacontentsummaryofanumberofRPMpackages #USAGE:showrpmrpmfile1rpmfile2... #EXAMPLE:showrpm/cdrom/RedHat/RPMS/*.rpm forrpmpackagein$*;do if[-r"$rpmpackage"];then echo"===============$rpmpackage==============" rpm-qi-p$rpmpackage else echo"ERROR:cannotreadfile$rpmpackage" fi doneShell里的一些特殊符号#!/bin/sh echo*.jpg 运行结果为: mail.jpgtux.jpg 引号(单引号和双引号)可以防止通配符*的扩展: #!/bin/sh echo"*.jpg" echo'*.jpg' 其运行结果为: *.jpg *.jpg其中单引号更严格一些,它可以防止任何变量扩展;而双引号可以防止通配符扩展但允许变量扩展: #!/bin/sh echo$SHELL echo"$SHELL" echo'$SHELL' 运行结果为: /bin/bash /bin/bash $SHELL 此外还有一种防止这种扩展的方法,即使用转义字符——反斜杆:\: echo\*.jpg echo\$SHELL 输出结果为: *.jpg $SHELLHeredocuments#!/bin/sh #wehavelessthan3arguments.Printthehelptext: if[$#-lt3];then cat<<HELP ren--renamesanumberoffilesusingsedregularexpressionsUSAGE:ren'regexp''replacement'files... EXAMPLE:renameall*.HTMfilesin*.html: ren'HTM$''html'*.HTM HELP exit0 fi OLD="$1" NEW="$2" #Theshiftcommandremovesoneargumentfromthelistof #commandlinearguments. shift shift #$*containsnowallthefiles: forfilein$*;do if[-f"$file"];then newfile=`echo"$file"|sed"s/${OLD}/${NEW}/g"` if[-f"$newfile"];then echo"ERROR:$newfileexistsalready" else echo"renaming$fileto$newfile..." mv"$file""$newfile" fi fi done 这个示例有点复杂,我们需要多花点时间来说明一番。第一个if