2010年7月19日月曜日

SBCL で コマンドライン引数を取得する方法


このエントリーをはてなブックマークに追加


前回の、Common Lisp をバッチ的に動かす方法に引き続き、
プログラムとして動作させるには引数を処理できる必要がある。

引数は *posix-argv* に格納されているようだ。

-------------------------------------------

[root@centos55 src]# sbcl
This is SBCL 1.0.40, an implementation of ANSI Common Lisp.
More information about SBCL is available at .

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* *posix-argv*


("sbcl")
* (quit)

[root@centos55 src]# sbcl a b c
This is SBCL 1.0.40, an implementation of ANSI Common Lisp.
More information about SBCL is available at .

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* *posix-argv*


("sbcl" "a" "b" "c")
*

* (quit)
-------------------------------------------
こんな感じで引数をリストとして取得できるようだ。


次に、コマンドラインからclを実行した場合、

vi test1.lisp
------------------
(format t "~{~a~%~}" *posix-argv*)
------------------


[root@centos55 src]# sbcl --script test1.lisp
sbcl

おや?--script と test1.lisp というのを引数として認識していないようだ。


[root@centos55 src]# sbcl --script test1.lisp a b c d
sbcl
a
b
c
d


ちょっと動作に癖があるようだ。使用時には注意。

0 件のコメント:

コメントを投稿