문제

Common LISP (Command Line Arguments) (특히 GNU에서)에서 명령 줄 인수를 얻을 수 있습니까?

도움이 되었습니까?

해결책

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*를 사용하여 Common LISP 스크립트에서 ArgV를 얻을 수 있습니다. sb-ext :* posix-argv*는 모든 인수를 보유하는 목록이며, 첫 번째 arg는 스크립트 파일 이름입니다.

각 구현에 대한 메커니즘을 추상화하는 언급 된 Clon 라이브러리가 있으며 이제는 더 간단합니다. 유닉스 -Opts, a 요리 책에 대한 튜토리얼.

(ql:quickload "unix-opts")

(opts:define-opts
    (:name :help
       :description "print this help text"
       :short #\h
       :long "help")
    (:name :nb
       :description "here we want a number argument"
       :short #\n
       :long "nb"
       :arg-parser #'parse-integer) ;; <- takes an argument
    (:name :info
       :description "info"
       :short #\i
       :long "info"))

그런 다음 실제 구문 분석이 완료됩니다 (opts:get-opts), 옵션과 나머지 자유 인수의 두 가지 값을 반환합니다.

볼 수 있듯이 https://stackoverflow.com/a/1021843/31615, 각 구현에는 자체 메커니즘이 있습니다. 이것을 다루는 일반적인 방법은 통합 인터페이스를 제공하는 래퍼 라이브러리를 사용하는 것입니다.

이러한 라이브러리는 책을 읽는 것뿐만 아니라이를 변환하고 사용자에게 유용한 출력을 제공하는 데 도움이 될 수 있습니다. 아주 완전한 패키지는 클론입니다 (클론이나 클론과 혼동하지 말아야합니다) 명령 줄 옵션 Nuker, 또한 광범위한 문서를 제공합니다. 그러나 예를 들어, 당신의 요구가 더 가벼워 야한다면 다른 사람들이 있습니다. 명령 선과 그리고 신청 ARGV.

QuickLisp의 패키지는 이름이 지정되었습니다 net.didierverna.clon, command-line-arguments, 그리고 apply-argv, 각각.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top