Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何通过管道将程序的cmdline输出运行多次并在出现关键字时停止?_Shell - Fatal编程技术网

Shell 如何通过管道将程序的cmdline输出运行多次并在出现关键字时停止?

Shell 如何通过管道将程序的cmdline输出运行多次并在出现关键字时停止?,shell,Shell,假设我想运行一个C程序1000次,这个程序基本上是一个测试脚本,它测试我编写的一个简单内核的功能。每次失败时,它都会输出一个“成功”。由于各种难以追踪的比赛条件,我们通常不得不在测试失败之前手动运行测试数百次。我尝试在网上搜索perl脚本或bash脚本来帮助我们运行此命令,但没有成功: pintos -v -k -T 60 --qemu -j 2 --filesys-size=2 -p tests/vm/page-parallel -a page-parallel -p tests/vm/chi

假设我想运行一个C程序1000次,这个程序基本上是一个测试脚本,它测试我编写的一个简单内核的功能。每次失败时,它都会输出一个“成功”。由于各种难以追踪的比赛条件,我们通常不得不在测试失败之前手动运行测试数百次。我尝试在网上搜索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
pintos-v-k-t60--qemu-j2--filesys size=2-p tests/vm/page parallel-a page parallel-p tests/vm/child linear-a child linear--swap size=4--q-f运行page parallel
并通过管道将命令传递到某个对象以检查关键字,以便在该关键字出现时可以停止/继续


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

在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
为true时;做
如果“pintos-v-k-t60--qemu-j2--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
我不能100%确定您在命令中需要引用什么,显然我无法运行您的特定命令。它周围可能不需要“”符号


grep-c
对匹配项进行计数,如果为0,则未找到关键字,因此它将再次运行循环。如果>0,则找到关键字并触发循环。

谢谢!我不需要在命令周围引用。这个命令对我很有效:虽然是真的;如果pintos-v-k-t60--qemu-j2--filesys size=2-p tests/vm/page parallel-a page parallel-p tests/vm/child linear-a child linear--swap size=4--q-f运行page parallel | grep-c“exit(-1)”;那就结束吧