2014-02-25 162 views
2

對於一點上下文,我正在使用Hubnet與Netlogo開發一個嚴肅的遊戲(〜參與模擬)的過程。我想動態鏈接NetLogo與外部模型,以便玩家能夠:1)從他們的hubnet客戶端界面運行一個外部程序(即模型),指定參數作爲輸入,並且2)有權訪問模擬結果(即讀取模型輸出作爲外部文件)。掙扎與外殼擴展

我發現後: https://groups.yahoo.com/neo/groups/netlogo-users/conversations/topics/8145

所以我下載/安裝外殼擴展與5.0.5的NetLogo(MAC OSX 10.7.5),並開始與它玩。

的好東西,我能夠執行:

觀察者>殼:CD 「路徑」

觀察者>殼:PWD

觀察者>殼:EXEC「 ls「(以及所有不需要輸入參數的命令,如shell:exec」cal「,shell:exec」df「 ...)。

現在不好的事情......

1)我一直沒有使用這些命令來啓動任何應用程序隨意: 觀察者>殼:EXEC「Safari.app」 或 觀察者>殼:EXEC 「野生動物園」( - >錯誤)

我的工作目錄是正確和Safari(或其他應用程序,我想推出)實際上是存在的,但返回的NetLogo以下錯誤:

擴展例外:不能運行程序「野生動物園」(目錄「/應用程序」):錯誤= 2,沒有這樣的文件或目錄 錯誤,同時觀察運行中的shell:EXEC 由指揮中心

2稱呼)我我也努力執行帶參數的shell命令(例如,shell:exec「open」「parameter 1」「parameter 2」 ...)。我無法找到正確的語法,因此NetLogo無法識別我要傳遞給命令的輸入參數。

我在Unix上的經驗非常有限,而且我是NetLogo的初學者,所以我必須在某處丟失某些東西。

如果有人可以幫助我通過這個,那將不勝感激!

非常感謝!

克萊門特

回答

1

是OS X,你必須使用open打開.app文件。如您所述,您必須將參數分離到程序中。所以

(shell:exec "open" "/Applications/Safari.app")

應該做你想要什麼。

下面是與多個參數的實際可執行的例子:

(shell:exec "ls" "-l" "-t")

最後,請注意shell:exec是記者。它以字符串的形式返回程序的輸出。

+0

謝謝布萊恩,效果很好:)我省略了括號...... – user3349152