سؤال

كيف يمكنني الحصول على وسيطات سطر الأوامر في (تحديدا في جنو ، إذا كان هناك أي اختلافات) 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-تحويلة: * POSIX-ARGV * للحصول على ARGV من البرنامج النصي ثغة المشترك. بينالي الشارقة-تحويلة: * POSIX-ARGV * وقائمة تعقد كل الحجج وسيطة الأول هو filname النصي

هناك المذكورة أيها النسخة مكتبة الملخصات آليات تنفيذ كل ما أبسط unix-يختار, ، دروس في الطبخ.

(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