SBCL 从命令行传递参数

SBCL pass param from command line

在 bash 中,如果我这样做 "foo.sh x",则可以通过调用 $1 在 bash 中使用 x。

如果我想用 lisp 做同样的事情,"script.lisp x" 我可以怎样 use/call 将 x 作为参数而不是 $1。

示例

#!/usr/local/bin/sbcl --script
(if (eql intp )
   (+  )
   (format t "~&not a valid int")))

这个问题的答案取决于您的特定 Lisp 实现。对于 SBCL,您可以在 User Manual 中找到,变量 sb-ext:*posix-argv* 包含命令行。所以例如。 (nth 1 sb-ext:*posix-argv*) 会给你第一个参数。