在 MIT-scheme 中读取命令行参数

Gio*_*gio 5 scheme mit-scheme

我正在尝试使用 MIT 方案(在 GNU/Linux 下运行的 MIT/GNU 方案,版本 7.7.90.+ || Microcode 15.1 || Runtime 15.7)运行方案程序,我想访问命令行参数。

我查看了文档,但没有找到任何具体内容。我尝试过命令行,但收到​​一条错误消息:

;Unbound variable: command-line
Run Code Online (Sandbox Code Playgroud)

我是否必须加载一些库才能使用命令行,或者是否有其他功能?

Gio*_*gio 4

我设法找到以下解决方案。

init.scm我创建了一个具有以下定义的文件:

(define command-line-args '())

(define parse-argument-list
  (lambda (arg-list)
    (set! command-line-args
      (if (null? arg-list)
          (list)
          (cdr arg-list)))))

(set-command-line-parser! "args" parse-argument-list)
Run Code Online (Sandbox Code Playgroud)

这样,当--args找到命令行选项时, parse-argument-list就会调用该函数。

我已将此文件加载到mit-scheme解释器中并使用该过程保存了世界图像(init.comdisk.save

然后我编写了一个 shell 脚本 (bash),它调用我的主计划脚本,如下所示:

mit-scheme --band "init.com" --interactive --batch-mode --args $* < myscript.scm
Run Code Online (Sandbox Code Playgroud)

最后,在我的主脚本中,我可以通过变量访问命令行参数

command-line-args
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是标准/正确的方法,但至少它有效。