shell实现一个简单自动化测试功能

今天遇到一个需求:一个文件中写了很多测试命令,需要读取文件中的命令,并执行,然后根据返回的执行结果,做一些文件拷贝的功能。由于以前从来没接触过shell脚本,只能一边百度语法,一边写代码,其中菜鸟教程的教程很好,值得推荐。就这样写下了第一段很简单的shell代码,留作纪念。

#!/bin/bash

dir="/usr/local"

#循环读取文件的每一行
cat ${dir}/test.txt | while read line

do
   echo $line
   #执行取得的命令,接受返回值
   temp=`$line`
   #截取返回值的0到5位
   val=${temp:0:5}
   echo $val
   
   if [ $val != "00002" ]
   then
      file=$RANDOM
      #拷贝文件到指定目录,以取得的随机数重命名
      cp tomcats/tomcat1/bin/startup.sh $file.sh
   fi

done

写的过程中,遇到几个问题,总结如下
1.shell读取文件也可以用for循环,但for循环其实是按照空格读取的,不能真正读取一行
2.if条件中,[]中的等号两边一定要加空格。
3.-ne等比较的运算符只适用于数字,不适用于字符串

上面的功能,还可以用expect脚本语言模拟人机交互实现。但是一般的Linux系统好像没有安装expect的环境,这里先安装环境,步骤如下。
1.下载:expect-5.43.0.tar和tcl8.4.11-src.tar,放到/usr/local/src目录下
2.安装tcl,步骤如下:

tar -zvxf tcl8.4.11-src.tar.gz
cd tcl8.4.11/unix
./configure
make && make install

3.安装expect,步骤如下:

tar -zvxf expect-5.43.0.tar.gz
cd expect-5.43.0
./configure --with-tclinclude=/usr/local/src/tcl8.4.11/generic --with-tclconfig=/usr/local/lib/
make && make install

安装完成后可以测试是否成功,命令whereis expect

expect代码如下,只粘了开始写的几行,留做参考:

#!/usr/bin/expect
send "ifconfig\r"
expect "eth0*"
send "cp /usr/local/tomcats/tomcat1/bin/startup.sh /usr/local/aa.sh"
send "\r"
expect eof
exit
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半__夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值