2010-12-03 82 views
2

我有一个用C语言编写的程序,其操作类似于下面的输出。用于测试命令行程序的shell脚本

WELCOME TO PROGRAM. 

Hit 1 to do task 1. 

Hit 2 to do task 2. 

Hit q to quit. 

我所需要的是一个bash外壳脚本,启动该程序,然后进入1,2和q为程序,所以我可以在一个命令测试所有的功能。

我会假设它看起来类似于以下

#!/bin/bash 

./start kernel 
1 
2 
q 

回答

2

通常使用expect测试这些类型的应用程序。

+0

前面提到的解决方案在某些情况下似乎可行,但您的解决方案似乎是最好的。感谢拜伦的帮助:) – 2010-12-22 20:33:15

4

您可以使用“这里文件”。语法如下:

./start kernel <<EOF 
1 
2 
q 
EOF 

“EOF”可能是你想要的任何独特字,只要它是不是你真正需要的输入。

+0

这是一个聪明的解决方案感谢劳伦斯:) – 2010-12-22 20:33:43

1

您可以保存您输入的文本文件 - input.txt中,执行程序是这样的:./program < input.txt

+0

我称这种方法为“穷人的自动化”,而且我使用它的方式比我想要承认的要多。零错误处理,但通常可以完成工作。 – bta 2010-12-03 02:38:12

0

你可以将shell脚本想象成它们......只是每一行都在一个(尽管是新的)shell中执行。

一个简单的方法做这样的输入,假设[your program]接受stdin是:

#!/bin/bash 
echo "1" | [your program] > [logfile1] 
echo "2" | [your program] > [logfile2] 
echo "q" | [your program] > [logfileq] 
+0

如果我误解了,请原谅我;在我原来的阅读中,我以为你想一次一个地测试这些功能(这个代码做了什么),但是现在我已经阅读了所提供的其他答案似乎还不清楚。 – William 2010-12-03 00:59:25

+0

@whoever_voted_down ...既然我是新来的,请给我一些关于你为什么这么做的提示? – William 2010-12-03 01:04:01

1

我这样做:

 
#! /bin/bash 

printf "1\n2\nq\n" | ./start kernel