测试工程师UnixShell编程入门_第1页
测试工程师UnixShell编程入门_第2页
测试工程师UnixShell编程入门_第3页
测试工程师UnixShell编程入门_第4页
测试工程师UnixShell编程入门_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、测试工程师unix shell编程入门(一)2006年5月17 0 10:48星期二 测试编程unix shell提供了强有力的功能,通过unix shell提供的功能,用 户可以指挥unix完成许多自动任务。对于软件测试工程师来说,如 果能够合理使用unix shell提供的功能,可以为极大程度地减轻测 试环境维护、测试实施的工作量。例如,假设我要对某个应用进行性能调优测试,该应用部署在unix 服务器上,且使用一个配置文件。在测试过程中,我们需要不断调整 配置文件的内容,以观察配置文件修改后系统性能表现的变化情况。 为了保留配置文件修改的痕迹,我们需要在每次配置文件修改完成 后,将原先的配

2、置文件重新命名。假如配置文件修改了 7次,则第七 次修改后的所有配置文件列表应该为:config. 7config. 6config. 5config. 4config. 3conf ig. 2config. 1 config再次修改后,文件列表变为:config. 8config. 7config. 6config. 5config 4config. 3config. 2config. 1config其中,config. 8文件就是原来的config. 7文件,config. 7文件就是 原来的config. 6文件这是一个并不复杂的任务,但如果每次都需要手工完成这个任务的 话,还是很费时费

3、力的。通过unix shell,可以简单地实现该问题 的自动解决。下面的shell脚木就可以完成该任务:#!/bin/sh# vim: set sw二4 ts二4 et:ver= 0. 1 helpocat < rotatefile rotate the file nameusage: rotatefile -h filenameoptions: h help textexample: rotatefile outthis will c. g rename out 2 to out 3, out. 1 to out 2, out to out 1 and create an empty

4、out-filethe max number is 10vcrsion $vcrhelpexit 0error ()echo $1exit 1while -n $1 ; docase $1 in-h) help;shift 1;-)break;-*) echo z/error: no such option $1. -h for help;exit 1;*) break;esacdone# input check:if -z $1 ; thenerror "error: you must specify a file, use -h for help"fifilen二$1#

5、 rename any 1 , .2 etc file:for n in 987654321; doif -f $filen. $n" ; thenp二expt $n + 1echo mv $filen. $n $filen. $pmv $filen. $n $filen. $pfidone# rename the original file: if -f $filert ; thenecho mv $filen $filen. 1mv $filen $filen. 1fiecho touch $filentouch $filen在下一部分中,我们介绍unix shell编程的基础知

6、识。测试工程师unix shell编程入门(二)说2006年6月20 h 23:01星期二测试编程bourne shell基础知识 shell提示符及其环境/etc/passwd 文件提示符:$/etc/profile $ii0me/.profileshell执行选项-n 测试shell script语法结构,只读取shell script但不执行-x进入跟踪方式,显示所执行的每一条命令,用于调度-a tag all variables for export-c "string" 从strings中读取命令-e非交互方式-f关闭shell文件名产生功能-h locate a

7、nd remember functions as defind-i交互方式-k从环境变量中读取命令的参数-r限制方式-s从标准输入读取命令-t执行命令后退出(shell exits)-u在替换中如使用未定义变量为错误-vverbose,显不shell输入行这些选项可以联合使用,但有些显然相互冲突,如-e和-i.受限制 shell (restircted shell)sh -r 或 /bin/rsh不能执行如下操作:cd,更改pat1i,指定全路径名,输出重定向,因此 可以提供-个较好的控制和安全机制。通常rsh用于应用型用户及拨号用户,这些用户通常是看不到提不足:如果用户可以调用sh,则tsh

8、的限制将不在起作用,事实上如果 用户在vi及more程序中调用shell,而这时rsh的限制将不再起作用。用set改变shell选项用户可以在$提示符下用set命令来设置或取消shell的选项。使用-设置 选项,+取消相应选项,大多数unix系统允许a, e, f, h, k, n, u, v和x的开关设置/取消。set -xv启动跟踪方式;显示所有的命令及替换,同样显示输入。set 一tu关闭在替换时对未定义变量的检查。使用echo $-显示所有已设置的shell选项。用户启动文件.profilepath=$path:/usr/loacl/bin; export pathshell环境变量c

9、dpath 用于cd命令的查找路径home/etc/passwd文件中列出的用户主目录ifsinternal field separator,默认为空格,tab 及换行符mail /var/mail/$usernamema订等程序使用pathpsi, ps2默认提示符($)及换行提示符()term 终端类型,常用的有vtloo, ansi, vt200, xterm等示例:$psl=z,test:z,:export psitest: ps1=zz$z/;export psi$ccho $mail /var/mail/username保留字符及其含义$shell变量名的开始,如$var&

10、line; 管道,将标准输出转到下一个命令的标准输入# 注释开始&在后台执行一个进程?匹配一个字符* 匹配0到多个字符(与dos不同,可在文件名中间使用,并且含)$-使用set及执行时传递给shell的标志位$!最后一个了进程的进程号$#传递给shell script的参数个数$*传递给shell script的参数$所有参数,个别的用双引号括起来$?上一个命令的返回代码$0当前shell的名字$n(n: 1-)位置参数$进程标识号(process identifiernumber, pid)>file输出重定向file输入重定向'command'命令 替换,如i

11、filename='basename/usr/local/bin/tosh>>fi订c输出重定向,append转义符及单引号:$echo $home $path/home/hbwork/opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/xllr6/bin:$echo,$iiome $path$h0me $path $echo $home $path$home/opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/xllr6/bin:/home/hbw ork/bin其他:$d 让二 is$dir

12、$alias dir is$diris > filelistis >> filelistwc -1 < filelistwc -1 filclistsleep 5; echo 5 seconds reaches: is -1ps ax &line:egrep inetdfind / -name core -exec rm ; &filename二'date +%y%m%d'.log测试工程师unix shell编程入门(三)垃2006年6月24 s 17:45星期六测试编程shell变量变量:代表某些值的符号,如shome, cd命令查找

13、$home,在计算机 语言中可以使用变量可以进行多种运算和控制。bourne shell有如下四种变量:用户自定义变量位置变量即shell script之参数预定义变量(特殊变量)环境变量(参考shell定制部分)(1)用户自定义变量(数据的存储)$ count=1$ name二he binwu"技巧:因为大部分unix命令使用小写字符,因此在shell 编程中通常使用全大写变量,当然这并不是强制性的,但使用大写字符可以在编 程中方便地识别变量。变量的调用:在变量前加$ echo $h0me/home/hbwork $ week=satur$ echo today is $weekd

14、aytoday is$echo today is $ week daytoday is saturday赋值!)shell变量赋值从右从左进行(linux shcll/bash从左向右$ x=$y y=y$ echo $xy$ z=z y=$z$ echo $y$使用unset命令删除变量的赋值$ z二hello$ echo $zhello $ unset z$ echo $z$有条件的命令替换在bourne shell中可以使变量替换在特定条件下执 行,即有条件的环境变量替换。这种变量替换总是用大括号括起来的。设置变量的默认值在变量未赋值之前其值为空。bourneshell允许对变量设置默认

15、值,其格式如下:$ variable:-defaultvalue 例:$ echo hello $unamehello$ echo hello $ uname:-there hello there$ echo $uname#变量值并未发生变化$ uname二hbwork$ echo hello $ uname:-there hello hbwork$另一种情况:改变变量的值,格式如下:$ variable:=value 例:$ echo hello $unamehello$ echo hello $ uname: =there hello there$ echo $uname #变量值并未 发

16、生变化there$变量替换中使用命令替换$userdir=$ $mydir:-'pwd' 在变量已赋值时进行替换 $ variable:+value 带有错误检查的有条件变量替换$ variable:?value 例:$ uname二$ echo $ uname: ?,zuname has not been set" uname: uname has not been set$ echo $ uname:? uname: parameter null or not set(2) 位置变量(shell参数)在shell script中位置参数可用$1. . $9表示,$

17、0表示内容通常 为当前执行程序的文件名。防止变量值被替换readonly variable使用export命令输出变量,使得变量对子shell可用,当shell 执行一下程序时,shell将为其设置一个新的环境让其执行,这称之了 subshell 在 bourne shell中变量通常被认为是本地变量,也就是说在对其赋值之外的shell环境之 外是不认识此变量的。使用 export 对 subshell 可用。例:对变量ps1的export操作,shell的提示符将发生变化。$ ps1=' hostname' $peony$sh$ echo $ps1$-输出结果$ exitpe

18、ony$export psipeony$shpeony$ echo $ps1pcony$-输出结果peony$测试工程师unix shell编程入门(四)连2006年6月24日17:50星期六 测试编程3. shell script 编程h的:使用unix所提供的最常用工具来完成所需复杂任务的强大功能。(1)最简单的shell编程$ls -r / &line:grep myname &line;more每天数据的备份:$ cd /usr/yourname; is * &line;cpio -o > /dev/rmt/0h书写程序的冃的是一次编程,多次使用(执行)!

19、$ cat > backup shcd /home/hbworkis * &line; cpio -o > /dev/rmt/oh执行:$ sh backup. sh或.$ chmod +x backup sh$ /backup. sh技巧:在shell script中加入必要的注释,以便以后阅读及维护。(2) shell是一个(编程)语言同传统的编程语言一样,shell提供了很多特性,这些特性可以使你的shell script编程更为有用,如:数据变量、参数传递、判断、流程控制、数据输入 和输出,子程序及以中断处理等。在shell编程中使用数据变量可以将程序变量更为通用,

20、如在上面 backup. sh 中:is * &1ine; cpio 一0 > /dev/rmt/oh.shell编程中的注释以#开头对shell变量进行数字运算,使用expr命令expr integer operator integer其中operator为+ - * / %,但对*的使用要用转义符,如:$expr 4 * 520$int二'expr 5+7'$echo $int12(3) shcll编程的参数传递,可通过命令行参数以及交互式输入变量(read)restoreall. sh对backup, sh程序的备份磁带进行恢复scat > resto

21、reall. shcd $workdircpio i < /dev/rmt/ohrestorel. sh:只能恢复一个文件#restorel 一一program to restore a single filecpio -i $i < /dev/rmt/ohsrestorel filel恢复多个文件restoreany :#restoreany -program to restore a single filecd $workdircpio -i $* < /dev/rmt/oh$ restoreany filel file2 file3(4) 条件判断.if-then语句,

22、格式如下:if commandlthencommand 2 command_3 ficommand_4在if-then语句中使用了命令返回码$?,即当command执行成功时才执行command 2 和coimiiand_3,而 cominand_4 总是执行.示例程序unload:在备份成功时删除原始文件,带有错误检查cd $1#备份时未考虑不成功的情况!is -a &line; cpio -o > /dev/rmt/ohrm -rf *改进如下:#当使用了管道命令时,管理命令的返回代码为最后一个命令的 返回代码if is -a ine; cpio -o > /dev/r

23、mt/ohthenrm -rf *fi.if-then-else 语句if commandl thencommand 2elsecommand 3fi技巧:由于shell对命令中的多余的空格不作任何处理,一个好的程序员会用这一特性对自己的程序采用统一的缩进格式,以增强自己程序的可 读性.使用test命令进行进行条件测试格式:test conditionstest在以下四种情况下使用:乩 字符比较b.两个整数值的比较c. 等d.联合使用a. 测试字符数据:shellstrl 二 str2strl !二 str2-n string-z string文件操作,如文件是否存在及文件的状态逻辑操作,可以

24、进行and/or,与其他条件变量通常民政部下均作为字符变量二者相长,相同不同string不为空(长度不为零)string为空stringstring不为空例:$ strlabcd#在含有空格时必须用引号括起来$ test $strl=abcd$ echo $?0$ strl=,/abcd $ test $strl二abed$ echo $?1note:在test处理含有空格的变量时最好用引号将变量括起 来,否则会出现错误的结果,因为shell在处理命令行时将会去掉多余的空格, 而用引号括起来则可以防止shell去掉这些空格.例:$ strl二$ test $strl$ echo $?1$ te

25、st z/$strlz/ $ echo $?$ test -n $strltest: argument expected$ test -n $strl$ echo $?0$b. 整数测试:test与expr相同,可以将字符型变量转换为整数进行 操作,expr进行整数的算术运算,而test则进行逻辑运算.表达式说明inti -eq int2相等?inti -ne int2不等?inti -gt int2inti > int2 ?inti -ge int2inti >= int2 ?inti -it int2inti < int2 ?inti -le int2inti <=

26、 int2 ?例:$ intl=1234$ int2=01234$ test $int1 -eq $int2$ echo $?0c. 文件测试:检查文件状态如存在及读写权限等-r filename-w filename-x filename-f filename-d filename-c filename-b filename-s filename-t fnumb相关的设备是一个终端设备?用户对文件filename有读权限?用户对文件filename有写权限?用户对文件filename有可执行权限?文件filename为普通文件?文件filename为目录?文件filename为字符设备文件?文件filename为块设备文件?文件filename大小不为零?与文件描述符fnumb (默认值为1)d测试条件之否定,使用!例:$ cat /dev/null > empty$ test r empty$ echo $?0$ test -s empty1$ test ! s empty$ echo $?0o.测试条件之逻辑运算-aand-oor例:$ test r empty -a -s empty$ echo $?1f进行test测试的标准方法因为te

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论