对于一些上下文,我正在使用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的初学者,所以我必须在某处遗漏某些东西。
如果有人能帮我解决这个问题,我将不胜感激!
非常感谢!
克莱门特
答案 0 :(得分:1)
在OS X中,您必须使用open
来打开.app
个文件。如你所知,你必须将程序的参数分开。所以
(shell:exec "open" "/Applications/Safari.app")
应该做你想做的事。
以下是具有多个参数的实际可执行文件的示例:
(shell:exec "ls" "-l" "-t")
最后,请注意shell:exec
是记者。它以字符串形式返回程序的输出。