【问题标题】:SBCL: running from bash and exiting back to bashSBCL:从 bash 运行并退出到 bash
【发布时间】:2014-11-09 13:48:02
【问题描述】:

我是 SBCL 的新手,我正在尝试从 bash 终端运行存储在文本文件中的 Lisp 脚本。

这是我在文件开头写的内容 http://www.sbcl.org/manual/#Running-from-Shell

#!/usr/local/bin/sbcl --script
(write-line "Hello, World!")

这是我从 bash 终端运行它的方式:

$ ./hello.lisp
Hello, World!

问题是脚本在执行后终止回到 bash。我希望脚本不要退出到 bash,而是保持 sbcl 解释器 运行(以便能够使用预定义的函数进行测试)。有简单的方法吗?

【问题讨论】:

    标签: bash shell lisp sbcl


    【解决方案1】:

    使用--eval-e 选项。

    sbcl --eval '(write-line "Hello, World!")',它会评估你的代码并将你留在 REPL 中。

    【讨论】:

    • 谢谢,但是在文本文件(实际脚本)中执行此操作的方法是什么?在“#!/usr/local/bin/sbcl --script”中用“--eval”替换“--script”似乎不起作用。
    • 您需要将文本作为参数传递给 -e 选项,例如将其包含在引号或类似的东西中。但看起来你在做一些 SBCL 不适合的事情。为什么不把你所有的 lisp 代码放在 .lisp 文件中,只从 SBCL 中使用 '(load "myfile.lisp")` 呢?您的完整用例是什么?
    • 我想在“myfile.lisp”中定义一个新函数。稍后我想在 SBCL 中使用这个功能。如果我尝试 (load "myfile.lisp") 它总是评估为 T 并且我无法使用该文件中定义的函数。 myfile.lisp 的内容是:(defun sumgr (x y z) (> (+ x y) z))。 SBCL 显示的错误是:在 UNBOUND-VARIABLE 上调用调试器:变量 SUMGR 未绑定。
    • 您好像做错了什么。 sbcl --load myfile.lisp 然后调用函数也失败了?
    • sbcl --load myfile.lisp 有效。这解决了我的问题。谢谢。
    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多