2014-02-25 133 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