【发布时间】:2010-10-28 14:04:05
【问题描述】:
我想输入类似“scheme file.scm”之类的内容并让它解释文件,然后带我回到我的 shell,而不是在 REPL 中加载它。
edit:我尝试了 scheme
【问题讨论】:
标签: scheme mit-scheme
我想输入类似“scheme file.scm”之类的内容并让它解释文件,然后带我回到我的 shell,而不是在 REPL 中加载它。
edit:我尝试了 scheme
【问题讨论】:
标签: scheme mit-scheme
scheme < file.scm 应该可以工作(只要您不指定 --interactive 并且 stdin 不是终端,方案就可以非交互方式工作)。
【讨论】:
我认为你想要的是 SCM。您可以像这样执行 .scm 脚本:
$ scm -f foo.scm arg1 arg2 arg3
【讨论】:
使用 MIT Scheme 运行方案程序:
scheme --quiet < program.scm
--quiet 选项可确保您的程序的输出是唯一显示的内容(即,根据您的要求,您不会看到 REPL)。
警告:如果您的程序提示用户使用输入程序进行输入(例如read、read-char、read-line 等),这将不起作用。这是因为 shell 输入重定向 (<)(参见:relevant question)。不幸的是,当使用输入过程时,目前没有从命令行执行 MIT Scheme 脚本的正确方法。最好的选择可能是mit-scheme --quiet --load 'myscript',但是当脚本完成时你必须手动退出 MIT Scheme。相关邮件列表线程:[MIT-Scheme-devel] How to run a script and exit?
编辑:由于您可能将< 错误输入为>,从而导致源代码被覆盖,我建议将上述命令封装在shell 脚本或shell 函数中。例如:
runscheme () {
scheme --quiet < "$1"
}
然后您可以运行runscheme program.scm,而不必担心您的源代码会被覆盖。 (特别感谢 Paul Rooney 提醒我注意这个潜在的错误)。
scheme --help:
--批处理模式、--quiet、--silent
抑制版本和版权的启动报告,以及 告别。
这个命令行选项似乎被list of command line options in the documentation 错误地省略了,但我认为这是一个合法的命令行选项,因为scheme --help 显示了它,并且因为--batch-mode 用于参考手册的其他部分(例如here)。
【讨论】:
<弄错了,否则你会覆盖你自己的源代码,还是只有我做这样的事情?
runscheme () { scheme --quiet < "$1" }.
检查了chez --help,然后我发现了这个(假设我使用的是chez方案):
chez --script ./temp.scm
另外,--verbose 非常有用:
chez --verbose --script ./temp.scm
【讨论】: