与shell扩展斗争

时间:2014-02-25 01:30:02

标签: macos shell netlogo

对于一些上下文,我正在使用Hubnet与Netlogo开发一个严肃的游戏(〜参与式模拟)。我想动态地将NetLogo与外部模型联系起来,以便玩家能够: 1)从其hubnet客户端接口运行外部程序(即模型),将参数指定为输入,和 2)可以访问模拟结果(即将模型输出作为外部文件读取)。

我发现帖子: https://groups.yahoo.com/neo/groups/netlogo-users/conversations/topics/8145

所以我使用NetLogo 5.0.5(Mac OsX 10.7.5)下载/安装了shell扩展,并开始使用它。

好事,我能够执行:

observer> shell:cd“path”

观察者GT;壳:PWD

observer> shell:exec“ls”(以及所有不需要输入参数的命令,例如 shell:exec“cal ”, shell:exec “DF” ...)。

现在坏事......

1)我一直无法使用这些命令启动任何随机应用程序: observer> shell:exec“Safari.app” 要么 观察者> shell:exec“Safari”( - >错误)

我的工作目录是正确的,Safari(或我尝试启动的其他应用程序)实际存在,但NetLogo返回以下错误:

扩展异常:无法运行程序“Safari”(在目录“/ Applications”中):error = 2,没有这样的文件或目录 观察者运行SHELL时出错:EXEC   由指挥中心调用

2)我也在努力执行带参数的shell命令(例如, shell:exec“open”“参数1”“参数2” ...)。我无法找到正确的语法,因此NetLogo无法识别我试图传递给命令的输入参数。

我在Unix方面的经验非常有限,而且我是NetLogo的初学者,所以我必须在某处遗漏某些东西。

如果有人能帮我解决这个问题,我将不胜感激!

非常感谢!

克莱门特

1 个答案:

答案 0 :(得分:1)

在OS X中,您必须使用open来打开.app个文件。如你所知,你必须将程序的参数分开。所以

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

应该做你想做的事。

以下是具有多个参数的实际可执行文件的示例:

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

最后,请注意shell:exec是记者。它以字符串形式返回程序的输出。