Как я могу получить аргументы командной строки (в частности, в GNU, если есть какие-либо отличия) Common Lisp?
Получение аргументов командной строки в Common Lisp
Ответ 1
Я предполагаю, что вы работаете с CLisp. Вы можете создать файл, содержащий
#! /usr/local/bin/clisp
(format t "~&~S~&" *args*)
Сделайте его выполнимым, запустив
$ chmod 755 <filename>
Запуск он дает
$ ./<filename>
NIL
$ ./<filename> a b c
("a" "b" "c")
$ ./<filename> "a b c" 1 2 3
("a b c" "1" "2" "3")
Ответ 2
http://cl-cookbook.sourceforge.net/os.html предоставляет некоторую проницательность
(defun my-command-line ()
(or
#+CLISP *args*
#+SBCL *posix-argv*
#+LISPWORKS system:*line-arguments-list*
#+CMU extensions:*command-line-words*
nil))
- это то, что вы ищете, я думаю.
Ответ 3
Вы говорите о Clisp или GCL? Похоже, что в GCL аргументы командной строки передаются в si::*command-args*
.
Ответ 4
В SBCL мы можем использовать sb-ext: * posix-argv *, чтобы получить argv из общего lisp script. Sb-ext: * posix-argv * - это список, содержащий все аргументы, первый arg - имя файла script.
Ответ 5
Как видно из fooobar.com/info/241887/..., каждая реализация имеет свой собственный механизм. Обычный способ справиться с этим - использовать библиотеку-оболочку, которая представляет вам унифицированный интерфейс.
Такая библиотека может предоставить дополнительную помощь не только в чтении, но и в преобразовании и предоставлении полезного вывода пользователю. Достаточно полный пакет CLON (не путать с CLON или CLON, извините), Параметры командной строки Nuker, в котором также содержится обширная документация, Однако есть и другие, если ваши потребности будут более легкими, например command-line-arguments и apply-argv.
Пакеты в quicklisp для них называются net.didierverna.clon
, command-line-arguments
и apply-argv
соответственно.