自动给输入执行的程序
问题描述:
我有一个C程序,我想运行而不必手动输入命令。我有4个命令(5个,如果你计算一个退出程序),我想给程序,我不知道从哪里开始。我看到一些像自动给输入执行的程序
./a.out <<<'name'
要传递一个单一的字符串,但是这并不适合我。 其他问题我让这变得更加困难的是,其中一个命令将提供输出,并且该输出需要成为稍后命令的一部分。如果我有权访问源代码,我可以在一些循环和计数器中暴力破解,所以我试图获得它的保留,但现在我坚持工作没有它。我以为有一种方法可以用bash脚本来做到这一点,但我不知道那会是什么。
答
在简单情况下,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
。
这适用于我所做的一个简单的测试程序,但我想我需要一些更多的参与。你能否给我一个使用except的例子 –