我正在尝试在lisp REPL中运行用Lisp编写的旧工具。我可以每次运行它来打开lisp REPL,(load ...)
该工具的Lisp源,然后运行工具命令打开文件:(doStuff "filename" t)
。此时它会以交互方式启动,询问我输入的内容。
我希望能够做的是编写一些加载工具的脚本,打开文件(这是脚本(doStuff "$1" t)
的参数),然后进入交互模式。
就我的研究和实验而言,在我使用的Lisp(SBCL 1.0.57)中没有办法运行文件然后进行交互。我可以运行我重定向/管道输入到lisp
的输入,但是一旦我用重定向替换标准,文件整个过程是非交互的(如果我错了,请纠正我,但这就是管道到目前为止的作用)我认为)。
我想要的是以某种方式为Lisp REPL提供几行来运行,然后让它开始从我那里获取输入。然后我可以把它放在一个带有一个参数(要使用的文件)的脚本中并运行命令,在必要时提示我输入。
此外,这不需要跨平台或很好看。我会对任何可行的任何hacky CLI fu感到高兴。
答案 0 :(得分:4)
您使用2.3.2 Toplevel Options中记录的命令行选项--load
:
--load filename
这相当于
--eval '(load "filename")'
。特殊的语法 旨在减少从shell调用SBCL时的引用令人头疼的问题 脚本。
例如:
$ cat hello.lisp
(print "Starting with a special startup script!")
$ sbcl --load hello.lisp
This is SBCL 1.0.49, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
"Starting with a special startup script!"
* (print 'at-the-repl)
AT-THE-REPL
AT-THE-REPL