SBCL从命令行传递param

Dré*_*lis 1 unix sbcl common-lisp

在bash中,如果我执行"foo.sh x",则可以通过调用$ 1在bash中使用x.

如果我想用lisp做同样的事情,"script.lisp x"我可以使用/调用什么来获取x作为参数而不是$ 1.

例

#!/usr/local/bin/sbcl --script
(if (eql intp $1)
   (+ $1 $1)
   (format t "~&not a valid int")))
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 5

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