Получение аргументов командной строки в Common Lisp

StackOverflow https://stackoverflow.com/questions/1021778

  •  06-07-2019
  •  | 
  •  

Вопрос

Как я могу получить аргументы командной строки (особенно в GNU, если есть какие-либо различия) в Common Lisp?

Это было полезно?

Решение

Я предполагаю, что вы пишете сценарии с 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")

Другие советы

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))

это то, что вы ищете, я думаю.

Вы говорите о Clisp или GCL? Похоже, в GCL аргументы командной строки передаются в si :: * command-args * .

В SBCL мы можем использовать sb-ext: * posix-argv *, чтобы получить argv из общего сценария lisp. Sb-ext: * posix-argv * - список, содержащий все аргументы, первый аргумент - имя файла сценария.

Как видно из https://stackoverflow.com/a/1021843/31615 , каждая реализация имеет свой собственный механизм , Обычный способ справиться с этим - использовать библиотеку-оболочку, которая представляет вам унифицированный интерфейс.

Такая библиотека может оказать дополнительную помощь не только в чтении, но и в конвертации и предоставлении полезного вывода пользователю. Довольно полным пакетом является CLON (не путать с CLON или CLON, извините), Параметры командной строки Nuker , которая также содержит обширную документацию. Однако есть и другие, если ваши потребности будут более легкими, например, аргументы командной строки и apply-argv .

Пакеты в QuickLisp для них называются net.didierverna.clon , аргументы командной строки и apply-argv соответственно .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top