CommonLispには複数行のシバンがあります。
#!/bin/bash
#|
exec clisp -q -q $0 $0 ${1+"$@"}
exit
|#
これにより、シバン内でより複雑な操作が可能になります。CLISPは、ARGVからスクリプト名を省略した数少ない言語の1つです。ここでは、LispスクリプトがARGVを介してスクリプト名にアクセスできるように、スクリプト名がCLISPに2回強制的に送信されます。
以下が機能するようにFactorでこれを行う方法はありますか?
$ cat ios7crypt.factor
#! /usr/bin/env factor
USING: kernel namespaces io prettyprint ;
IN: ios7crypt
: usage ( -- )
"Usage: ios7crypt.factor [options]" print
"-encrypt <password>" print
"-decrypt <hash>" print
"-test" print
"-help" print ;
: main ( -- ) "help" get . ;
MAIN: main
$ ./ios7crypt.factor
f
$ ./ios7crypt.factor -help
f
上記の行は出力されるはずですが、Factorはスクリプト名の後にあるため、t
無視します。-help
$ factor ios7crypt.factor
f
$ factor -help ios7crypt.factor
t
これ-help
は、スクリプト名の前に送信されたために機能します。シェバンがに拡大するため、./ios7crypt.factor -help
静かにドロップします。残念ながら、Factorはスクリプト名の前にすべてのコマンドラインオプションを必要としているようです。-help
factor ios7crypt.factor -help
この動作をオーバーライドする複数行のシバンはありますか?