2017-04-06 53 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的例子 –