2017-04-06 60 views
1

我有一个C程序,我想运行而不必手动输入命令。我有4个命令(5个,如果你计算一个退出程序),我想给程序,我不知道从哪里开始。我看到一些像自动给输入执行的程序

./a.out <<<'name' 

要传递一个单一的字符串,但是这并不适合我。 其他问题我让这变得更加困难的是,其中一个命令将提供输出,并且该输出需要成为稍后命令的一部分。如果我有权访问源代码,我可以在一些循环和计数器中暴力破解,所以我试图获得它的保留,但现在我坚持工作没有它。我以为有一种方法可以用bash脚本来做到这一点,但我不知道那会是什么。

回答

0

在简单情况下,bash脚本是一种可能性:在coproc(需要版本4)中运行可执行文件。简单例子:

#!/bin/bash 

coproc ./parrot 

echo aaa >&${COPROC[1]} 
read result <&${COPROC[0]} 
echo $result 
echo exit >&${COPROC[1]} 

parrot(测试可执行文件):

#!/bin/bash 

while [ true ]; do 
    read var 
    if [ "$var" = "exit" ]; then exit 0; fi 
    echo $var 
done 

对于更严重的情况下,使用expect

+0

这适用于我所做的一个简单的测试程序,但我想我需要一些更多的参与。你能否给我一个使用except的例子 –

相关问题