2

假设我想运行一个 C 程序 1000 次,而这个程序基本上是一个测试脚本,用于测试我编写的一个简单内核的功能。每次失败时它都会输出“SUCCESS”。由于难以追踪的各种竞争条件,我们经常不得不手动运行测试几百次才能失败。我曾尝试在网上搜索可帮助我们运行此命令的 perl 脚本或 bash 脚本,但徒劳无功:

pintos -v -k -T 60 --qemu -j 2 --filesys-size=2 -p tests/vm/page-parallel -a page-parallel -p tests/vm/child-linear -a child-linear --swap-size=4 -- -q -f run page-parallel < /dev/null

并将命令传递给某个东西以检查关键字,以便在该关键字出现时停止/继续。

任何人都可以指出我正确的方向吗?

4

1 回答 1

1

在 bash 中,您可以在 while 循环中运行它:

while true; do
if "pintos -v -k -T 60 --qemu -j 2 --filesys-size=2 -p tests/vm/page-parallel -a page-parallel -p tests/vm/child-linear -a child-linear --swap-size=4 -- -q -f run page-parallel < /dev/null" | grep -c KEYWORD; then 
break
fi
done

我不能 100% 确定您需要围绕命令进行引用,显然我无法运行您的特定命令。它可能不需要它周围的“”。

grep -c计算匹配项,如果为 0,则找不到 KEYWORD,因此它再次运行循环。如果 > 0 则找到 KEYWORD 并且循环中断。

于 2013-03-01T11:01:16.367 回答