2009-06-20 12 views

答えて

16

私はあなたがCLispでスクリプトを作成していると仮定しています。あなたはCLISPやGCLについて話していることが

$ ./<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))に使用され、文字列では機能しません: # 'make-symbol * 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

(またはFOO nil)はFOOと同等ですが、そうではありませんか? –

+1

はい、あなたのFOOを条件付きで読むと、おそらく、フォールバックを持つのがよいでしょう。しかし、(あるいは)の価値は、まったく驚くべきことではない(NILの価値がTと同じように)。 – Vatine

4

を与えて実行

$ chmod 755 <filename> 

を実行して、それが実行してください

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

を含むファイルを作成することができますか? GCLのように、コマンドライン引数はsi::*command-args*に渡されます。

2

SBCLでは、sb-ext:* posix-argv *を使用して、共通のlispスクリプトからargvを取得できます。 sb-ext:* posix-argv *はすべての引数を保持するリストで、最初のargはスクリプトfilnameです。

+0

これはもううまくいきません。 "シンボル" POSIX-ARGV "がSB-EXTパッケージに見つかりません。 ' – Langston

+0

はsb-ext:* posix-argv *でなければなりません。古いテキストでは、スタイルとして働く\ * something \ *です。 –

1

https://stackoverflow.com/a/1021843/31615のように、各実装には独自のメカニズムがあります。これを処理する通常の方法は、統一されたインターフェースを提供するラッパー・ライブラリーを使用することです。

このようなライブラリは、物を読むだけでなく、それらを変換して、有用な出力をユーザに与えるさらなる支援を提供することができる。完全なパッケージはCLON(CLONまたはCLONと混同しないでください)、Command Line Options Nukerです。しかし、あなたのニーズがより軽い場合は、例えばcommand-line-argumentsapply-argvのようなものがあります。

これらのquicklispのパッケージは、それぞれnet.didierverna.clon,command-line-arguments、およびapply-argvという名前です。

関連する問題