2013-01-12 100 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