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` $* #*/ ] ;
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"); }