Common Lisp 有多行 shebangs:
#!/bin/bash
#|
exec clisp -q -q $0 $0 ${1+"$@"}
exit
|#
这允许在 shebang 中进行更复杂的操作。CLISP 是少数从 ARGV 中省略脚本名称的语言之一。在这里,脚本名称被强制发送两次给 CLISP,以便 Lisp 脚本可以通过 ARGV 访问其脚本名称。
有没有办法在 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
上面的行应该 print t
,但 Factor 忽略了-help
,因为它出现在脚本名称之后。
$ factor ios7crypt.factor
f
$ factor -help ios7crypt.factor
t
这是有效的,因为-help
在脚本名称之前发送。./ios7crypt.factor -help
无声地下降-help
,因为 shebang 扩展为factor ios7crypt.factor -help
。不幸的是,Factor 似乎需要脚本名称之前的所有命令行选项。
是否有覆盖此行为的多线 shebang?