我想输入类似“scheme file.scm”之类的东西并让它解释文件,然后带我回到我的 shell,而不是在 REPL 中加载它。
编辑:我尝试了scheme < test.scm,它仍然使用REPL,唯一的区别是当流结束时scheme退出。
我想输入类似“scheme file.scm”之类的东西并让它解释文件,然后带我回到我的 shell,而不是在 REPL 中加载它。
编辑:我尝试了scheme < test.scm,它仍然使用REPL,唯一的区别是当流结束时scheme退出。
scheme < file.scm
应该可以工作(只要您不指定--interactive
并且 stdin 不是终端,方案以非交互方式工作)。
要使用 MIT 方案运行方案程序:
scheme --quiet < program.scm
该--quiet
选项确保程序的输出是唯一显示的内容(即,根据您的要求,您不会看到 REPL)。
警告:如果您的程序提示用户使用输入过程(例如read
、read-char
、read-line
等)进行输入,这将不起作用。这是因为 shell 输入重定向 ( <
)(请参阅:相关问题)。不幸的是,当使用输入过程时,目前没有从命令行执行 MIT Scheme 脚本的正确方法。最好的选择可能是mit-scheme --quiet --load 'myscript'
,但是当脚本完成时您必须手动退出 MIT 方案。相关邮件列表线程:[MIT-Scheme-devel] 如何运行脚本并退出?
编辑:由于您可能会误输入<
as >
,从而导致源代码被覆盖,我建议将上述命令封装在 shell 脚本或 shell 函数中。例如:
runscheme () {
scheme --quiet < "$1"
}
然后你就可以运行runscheme program.scm
而不必担心你的源代码会被覆盖。(特别感谢Paul Rooney让我注意到这个潜在的错误)。
scheme --help
:
--batch-mode, --quiet, --silent
抑制版本和版权的启动报告,以及告别。
这个命令行选项似乎被错误地从文档中的命令行选项列表中省略了,但我认为这是一个合法的命令行选项,因为scheme --help
它显示了它,并且因为--batch-mode
在参考手册的其他部分中使用(例如这里) .
我想你想要的是单片机。您可以像这样执行 .scm 脚本:
$ scm -f foo.scm arg1 arg2 arg3
有关详细信息,请参阅http://people.csail.mit.edu/jaffer/scm_3.html#SEC28 。
SCM 主页: http: //people.csail.mit.edu/jaffer/SCM
检查chez --help
,然后我发现了这个(假设我使用的是 chez 方案):
chez --script ./temp.scm
另外,--verbose
非常有用:
chez --verbose --script ./temp.scm