2013-01-12 134 views
0

我正在制作一个bash脚本来将命令发送到已启动的程序,我在互联网上创建的唯一途径是通过named pipes将信息从bash脚本发送到程序

是否有更简单的方法在同一个脚本中完成所有操作?因为命名管道的问题是我必须有3个脚本,一个用于管理程序,另一个从主程序发送信息,然后读者将信息解析到程序(如果我正确理解上述链接)。

这是作为经理打电话给别人,因为我需要的读者收到文件作为输入数组和我没有发现这样的方式,如果你懂得请answer this other question.

谢谢问题你

--- 26/01/2012 ---

卡尔文章后我试着

#!/bin/bash 

MUS_DIR="/home/foo/dir/music" 

/usr/bin/expect <<-_EOF_ 
spawn vlc --global-key-next n $MUS_DIR 
sleep 5 
send 'n' 
sleep 5 
send "n" 
_EOF_ 

但它不工作,它只是滋生VL c但它不会跳过歌曲

回答

0

您可能想查看expect(1)

+0

如果您可以帮忙请阅读帖子的版本... – Vndtta

+0

为什么你将期望的脚本嵌入到bash脚本中?我在这里尝试过(使用Mac VLC),它似乎没有从标准输入输入 - 你确定你正在尝试做甚至可能的事情吗? –

+0

因为我需要在脚本中稍后继续使用bash命令,所以如果你在终端(至少在ubuntu)启动vlc --global-key-next n,然后按n跳过歌曲,所以是的,我想它会接受stdin ... – Vndtta

0

有关您想要与之通信的程序的更多细节将会很有用。

基本上你只需要某种进程间通信。可以使用文件/管道/信号/套接字。例如,写入脚本中的特定文件,然后发送程序中断,以便知道检查文件。

取决于您所选择的语言,以及您可以花多少时间在此项目上/此项目的规模有多大。你可以让已启动的程序使用一个线程来侦听端口上的TCP数据包并对它们做出反应。然后在你的bash脚本中,你可以netcat信息,或发送一个HTTP POST curl。

您确定应用程序不可能由脚本启动吗?允许脚本传递参数或定义一些环境变量。

+0

我是bash脚本编写新手,所以我不确定任何事情,我想与之沟通的程序是vlc,我想启动它,然后要求用户输入一些输入内容,并发送选项到程序。例如,如果用户按'n'向vlc发送命令以转换到下一首歌曲。感谢您的好意 – Vndtta

+0

我也是新的在stackoverflow论坛,所以我不知道你是否收到最后评论的通知,因为我没有提到你的名字:S – Vndtta