2009-06-20 37 views
21

में कमांड लाइन तर्क प्राप्त करना मैं कमांड लाइन तर्क कैसे प्राप्त कर सकता हूं (विशेष रूप से जीएनयू में, यदि कोई अंतर है) सामान्य लिस्प?सामान्य लिस्प

उत्तर

16

मुझे लगता है कि आप CLisp के साथ स्क्रिप्टिंग कर रहे हैं। आप

$ 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") 
+0

इस पोस्ट में लिंक अब व्यवहार्य नहीं है। :( – masukomi

+0

यह बहुत अच्छा है। लेकिन मैं तारों से डेटा कैसे बना सकता हूं? मेरे फ़ंक्शन का उपयोग इस तरह के इनपुट (अद्वितीय '(abccdddef)) के लिए किया जाता है और यह तारों के साथ काम नहीं करता है: ओ .. मैंने कोशिश की (मैपकार # 'मेक-सिंबल * args *) लेकिन ऐसा लगता है कि यह काम –

24

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

आप के लिए क्या देख रहे है कुछ अंतर्दृष्टि प्रदान करता है, मुझे लगता है।

+0

(या खाद्य शून्य) खाद्य के बराबर है, है ना? –

+1

हां, लेकिन जब आप अपने भोजन को सशर्त रूप से पढ़ते हैं, तो संभवतः, गिरावट के लिए अच्छा है। लेकिन, फिर, (या) का मूल्य पूरी तरह से आश्चर्यजनक नहीं है, शून्य (जैसा कि (और) का मान टी है)। – Vatine

4

आप Clisp या GCL के बारे में बात कर रहे हैं द्वारा युक्त

#! /usr/local/bin/clisp 
(format t "~&~S~&" *args*) 

यह निष्पादन योग्य बनाने के लिए एक फ़ाइल बना सकते हैं? जीसीएल में लगता है कि कमांड लाइन तर्क si::*command-args* में पारित हो जाते हैं।

2

एसबीसीएल में, हम सामान्य लिस्प स्क्रिप्ट से argv प्राप्त करने के लिए एसबी-एक्सटी: * posix-argv * का उपयोग कर सकते हैं। एसबी-एक्सटी: * पॉजिक्स-एर्गव * एक सूची है जिसमें सभी तर्क हैं, पहला तर्क स्क्रिप्ट फ़ाइल नाम है।

+0

नहीं है मुझे यकीन नहीं है कि यह अब काम करता है। मुझे त्रुटि संदेश' प्रतीक 'POSIX-ARGV "एसबी-एक्सटी पैकेज में नहीं मिला है। ' – Langston

+0

एसबी-एक्सटी होना चाहिए: * posix-argv *, पुराने पाठ में, \ * कुछ \ * शैली के रूप में काम करता है। मुझे खेद है। –

1

जैसा कि https://stackoverflow.com/a/1021843/31615 में देखा गया है, प्रत्येक कार्यान्वयन का अपना तंत्र है। इसका निपटारा करने का सामान्य तरीका एक रैपर लाइब्रेरी का उपयोग करना है जो आपके लिए एक एकीकृत इंटरफ़ेस प्रस्तुत करता है।

ऐसी लाइब्रेरी न केवल चीजों को पढ़ने में, बल्कि उन्हें परिवर्तित करने और उपयोगकर्ता को सहायक आउटपुट देने में और सहायता प्रदान कर सकती है। एक पूर्ण पैकेज है क्लोन (क्लोन या क्लॉन के साथ उलझन में नहीं, क्षमा करें), Command Line Options Nuker, जो व्यापक दस्तावेज़ीकरण भी लाता है। हालांकि, अन्य हैं, आपकी आवश्यकताओं को अधिक हल्का होना चाहिए, उदाहरण के लिए, command-line-arguments और apply-argv

इनके लिए quicklisp में संकुल क्रमशः net.didierverna.clon, command-line-arguments, और apply-argv नामित हैं।

संबंधित मुद्दे