Bash Shell 脚本如何实现周期性结果回扫

本文介绍了如何使用Bash Shell脚本来解决硬件模拟器测试问题。当模拟器在运行完测试题后会保持空转状态,作者通过在每个测试题末尾添加特定打印并在脚本中定期检查这一打印来判断测试完成。一旦检测到测试完成,脚本将保存结果,结束当前进程,并开始运行下一个测试题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写shell脚本时遇到一个问题:


在一个叫做isp硬件模拟器上运行一系列.c的测试题,但是这个模拟器在跑完一道测试题之后还会模仿cpu一直空转(类似低功耗待机状态),进程无法中断,所以也无法继续运行接下来的可执行文件。


所以导致了每次运行完一道测试题之后,要确定这道测试题是否跑出结果,然后保存结果,kill掉该测试题的进程,再丢下一个测试题进行测试。

 

那么如何实现结果回扫,依次杀死课题,并运行下一道测试题呢?

 

我的思路是这样的:

 

1.在每个.c文件的最后都加一个打印——“$name test ok!”。比如aaa.c文件的最后,就会有一行“aaa test ok!”

 

2.每隔五秒去扫描改模拟器的打印文件,如果扫到了$name test ok!,就证明该题目已经测试完毕,那么进行结果保存。


3.杀掉该进程(因为题目跑完后模拟器还在一直空转),去运行下一道题目。

 

具体代码如下:


#!/bin/bash
#this is a run shell for scan the result periodicity
#author liao
#date 2018.01.29

#对题目进行编译,题目为目录$HOME/test/isp_test下的c文件,编译器是gcc编译器
cd $HOME/test/isp_test
for name in `ls *.c`
do
#这行代码的意思是,aaa.c编译生成的文件命名为aaa,而不是a.out,并将编译过程重定向到log文件中。
gcc $name -o ${name%%.*} &>>log
done

#看log文件中有没有报编译错误
str1=`grep "error" log`
len1=$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猪笨是念来过倒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值