Common Lisp でユーティリティ プログラムを作成し、Clozure CL でビルドしています。プログラムでコマンドライン オプションを使用できるようにしたいのです-d
が、何らかの理由でこの特定のオプションが(ccl::command-line-arguments)
. 最小限の例を次に示します。
(defun main ()
(format t "~s~%" (ccl::command-line-arguments))
(quit))
でコンパイルしました
(save-application "opts"
:toplevel-function 'main
:prepend-kernel t)
出力例を次に示します。
~/dev/scratch$ ./opts -c -a -e
("./opts" "-c" "-a" "-e")
~/dev/scratch$ ./opts -c -d -e
("./opts" "-c" "-e")
~/dev/scratch$ ./opts -b --frogs -c -d -e -f -g -h --eye --jay -k -l
("./opts" "--frogs" "-c" "-e" "-f" "-g" "-h" "--eye" "--jay" "-k" "-l")
とオプションが失われているようです-b
。のコマンドライン引数に関する-d
ドキュメントはあまり役に立ちません。たぶんそれ自体が引数として取るため、そのオプションは何らかの理由で食べられたのではないかと思いましたが、それはかかりません(食べられます)、そしてかかりますが、かかりません。アプリケーションの保存については何も役に立たないようでした。ccl
ccl
-b
-d
-e
-l
他のものがすべての引数を取得しているように見えるため、Clozure固有のものであると確信しています(たとえば、シェルがそれらを食べているわけではありません)。
#!/usr/bin/python
import sys
print sys.argv
収量
~/dev/scratch$ ./opts.py -a -b -c -d -e
['./opts.py', '-a', '-b', '-c', '-d', '-e']
と
#!/bin/bash
echo "$@"
与える
~/dev/scratch$ ./opts.sh -a -b -c -d -e
-a -b -c -d -e
これはすべて、シェルとしてlubuntu 15.10で行わbash
れています。
なぜこれが起こっているのか、またはすべてのコマンドラインスイッチをどのようにして終わらせることができるのか、誰かが光を当てることができれば、私は感謝しています.
ありがとう。