我有一个用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
我有一个用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
通常使用expect测试这些类型的应用程序。
您可以使用“这里文件”。语法如下:
./start kernel <<EOF
1
2
q
EOF
“EOF”可能是你想要的任何独特字,只要它是不是你真正需要的输入。
这是一个聪明的解决方案感谢劳伦斯:) – 2010-12-22 20:33:43
您可以保存您输入的文本文件 - input.txt中,执行程序是这样的:./program < input.txt
我称这种方法为“穷人的自动化”,而且我使用它的方式比我想要承认的要多。零错误处理,但通常可以完成工作。 – bta 2010-12-03 02:38:12
你可以将shell脚本想象成它们......只是每一行都在一个(尽管是新的)shell中执行。
一个简单的方法做这样的输入,假设[your program]
接受stdin是:
#!/bin/bash
echo "1" | [your program] > [logfile1]
echo "2" | [your program] > [logfile2]
echo "q" | [your program] > [logfileq]
我这样做:
#! /bin/bash printf "1\n2\nq\n" | ./start kernel
前面提到的解决方案在某些情况下似乎可行,但您的解决方案似乎是最好的。感谢拜伦的帮助:) – 2010-12-22 20:33:15