需要一个shell脚本来自动输入1-10000到程序中

时间:2015-11-12 07:44:22

标签: c linux bash shell unix

非常简单,我需要通过输入大量的整数来测试C程序。要做到这一点,对于这种特殊情况,我需要运行程序,然后当它等待用户输入(scanf("%d,整数))时,我需要从循环中给它一个整数I&#39 ;我目前在。

现在我有

    for i in {1..5};
do 
(echo -n "$i" && ./a2 $i)
done

但它仍然只是等待用户输入,然后在给出用户输入后,打印循环I的整数。我已经尝试了一些我在堆栈交换和其他地方发现的类似问题的例子,但到目前为止还没有运气。我之前并没有真正需要使用shell脚本来解决这个问题,所以我可能会做一些简单的事情,但是之前没有其他人做错了。

3 个答案:

答案 0 :(得分:3)

试试这个!

for i in `seq 1 1000`; do echo $i | ./a2; done

您的解决方案

echo -n "$i" && ./a2 $i

将传递$ i作为a2输入的参数。

答案 1 :(得分:1)

我认为您所需要的通常不是使用shell脚本完成的。

您可以编写c code来生成输入,在本例中为1-10000的数字。让该文件为testGenerator.c。然后,在终端上运行:

gcc testGenerator.c
./a.out >input

这将创建一个名为input的文件,其编号从1到10000,这当然是testGenerator.c的o / p。

然后,如果您想要输入的程序被编译为a2,我可以看到,您可以将其运行为:

./a2 <input >output

您将在文件output中获得所需的输出。如果你不在这里写>output,你会在终端上看到o / p。

此外,当您运行此脚本时,实际上运行a2 10000次并给出一个数字作为命令行参数,这与从stdin获取输入非常不同,当然, scanf确实如此。

答案 2 :(得分:0)

for i in {1..1000}; do echo $i | ./a2; done