cygwin 環境での wsh/cscript 用 shebang

wshスクリプトcygwin で直接実行できるようにするためのメモ。

通常の #! shebang は、 cscript(jscript) では構文エラーになってしまうので使えません。
cygwin(dash) でスクリプトを直接実行するために、sh でも jscript でも有効な shebang の代替が必要になります。

で、とりあえず以下で大丈夫な模様。

[ /'//*' ] && exec cscript -E:jscript -nologo `cygpath -w $0` $* #*/ ] ;

jscript 構文上では、変な正規表現とコメントが中においてある配列に、
sh 構文上では、変な test がある exec に解釈されます。

jscriptだと:

[ /'//*' ] && exec cscript -E:jscript -nologo `cygpath -w $0` $* #*/ ] ;

shだと:

[ /'//*' ] && exec cscript -E:jscript -nologo `cygpath -w $0` $* #*/ ] ;

実際の使用例、UAC昇格用のスクリプトです。

elevate:

[ /'//*' ] && exec cscript -E:jscript -nologo `cygpath -w $0` $* #*/ ] ;
var args = WScript.Arguments;
if (args.length > 0) {
  for (var opts = [], i = 1; i < args.length; i++) opts.push(args(i));
  WScript.CreateObject("Shell.Application")
    .ShellExecute(args(0), opts.join(' '), "", "runas");
}