使用bash脚本将消息传递给交互式程序

时间:2011-03-11 18:26:01

标签: bash shell echo

我编写了一个echoclient和echoserver网络程序,以便客户端写的消息可以通过echoserver程序回显给客户端。 Echoclient是一个等待用户输入消息的交互式程序。然后它发送消息,获取响应,然后再次等待来自用户的新消息。现在我想写一个脚本shell,这样我就可以每100微秒向服务器发送一条新消息。但我不知道如何将消息传递给echoclient程序。有什么想法?

#connect to the server ...
./echoclient SERVER_IP_ADDR SERVER_PORT

i=1
while [ 1 ]
do
   #send "message i" to the server. how to do it?
   usleep 100  
   let i++ 
done

2 个答案:

答案 0 :(得分:2)

编辑:第一个答案是关闭 - 误读了这个问题。以下机制应该有效。

mkfifo /tmp/echostuff
./echoclient SERVER_IP_ADDR SERVER_PORT < /tmp/echostuff &

exec 3>/tmp/echostuff
let i=1
while true
do
   echo "message $1" >&3
   sleep 0.0001
   let i+=1
done

答案 1 :(得分:1)

而不是一个fifo(Erik表示),一个简单的管道也应该工作,就像这样(从Erik的anwser窃取的代码):

let i=1
while true
do
   echo "message $i"
   sleep 0.001
   let i+=1
done |
./echoclient SERVER_IP_ADDR SERVER_PORT

这样循环在子shell中运行,所以你不能在循环后访问$i的新值(它仍然是1)。

另一种方法是将echoclient作为bash协处理器运行,并将其输入连接到echo命令的输出。 (如果你想看到结果,也会变得更复杂。)