5

どうすればChickenSchemeでスクリプト名を確実に取得できますか?

-ssはスクリプト名を使い果たしているようです。そのため、ドットスラッシュを使用してスクリプトを実行しない限り、スクリプト名は表示されません。

scriptedmain.scm:

#!/usr/bin/env csi -q

(display (command-line-arguments))
(display "\n")
(exit)

痕跡:

$ ./scriptedmain.scm 
(-q ./scriptedmain.scm)
wonko:Desktop andrew$ csi -ss scriptedmain.scm 
()
4

3 に答える 3

6

これは遅い応答であるため、元のポスターには役に立たない可能性があります。しかし、この質問に出くわす可能性のある他の人にとって、簡単な答えはパラメータを使用することです。

(program-name)

これにより、すべての状況で正しい名前が返されます。ここにドキュメント。

于 2011-09-11T22:58:33.030 に答える
1

(argv)仕事をする必要があります。例:

#!/usr/local/bin/csi -script

(display (argv)) (newline) (exit)

プリント(/usr/local/bin/csi -script ./test.scm)

于 2011-03-04T07:18:35.300 に答える
1

次の場合、scriptedmain.scmが実行され(main)、プログラム名が出力されます。

インタプリタから実行します。

csi -ss scriptedmain.scm

シバンを使用してインタプリタから実行します。

./scriptedmain.scm

編集済み:

csc -o scriptedmain scriptedmain.scm
./scriptedmain

GitHubに追加されました。

#!/bin/sh
#|
exec csi -ss $0 ${1+"$@"}
exit
|#

(define (main)
    (display (format "Program: ~a\n" (program-name)))
    (exit))

(if (not (equal? (program-name) "csi"))
    (main))
于 2011-03-05T22:04:29.417 に答える